新闻中心

EEPW首页 > 牛人业话 > 写代码不写注释?!无注释主义了解一下~

写代码不写注释?!无注释主义了解一下~

作者:天雷君时间:2018-09-17来源:电子产品世界收藏

据说,共产党员入党时需要面向党旗宣读誓言,在庄严、肃穆的气氛中,宣誓人怀抱着拳拳报国之心,压抑着胸中的激荡不已,热泪盈眶、目光坚定地朗读简洁有力的誓言,沉甸甸的誓言中有一句话特别鼓舞人心:为共产主义奋斗终身。

本文引用地址:http://www.eepw.com.cn/article/201809/391975.htm

“主义”实在是一个好东西,它看似虚无缥缈,却可以指导国家和人民的工作和生活。当今社会正处于剧烈变革之中,各种主义粉墨登场,占据了不同群体的精神世界,犬儒主义、乐观主义、民本主义、民族主义、实用主义、贸易保护主义、自由主义、资本主义、社会主义、达达主义、完美主义、教条主义等等,不一而足,每一个主义承托着一个思想世界,各种主义让我们获得新知,受到教益,笔者在多年的科研工作生涯中摸爬滚打,一路荆棘,也渐渐在写方面形成了自己的主义-无主义!

1

有人说,上帝给你关上一扇门,必然会为你开启一扇窗,笔者对此金句颔首低眉,深以为然。就拿我来说吧,为人木讷,不善言谈,典型一个三脚跺不出一个屁来的闷葫芦,但是又颇喜写作,虽然文笔欠佳,却也经常文思涌动,恨不能剥皮为纸,以血为墨,折骨为笔,写它个一死方休。

笔者不仅以文字记录工作生活、思想感悟,曾经,还以为田,笔耕不辍,到了不写就不写的地步。当然,笔者的也难脱俗套,范畴基本上只限于解释代码的设计思路、具体实现的注意事项、关键变量的作用、函数调用参数的说明等内容。时过境迁,当时的心境也已难寻,现在想来,当时之所以要写注释,一方面是循规蹈矩随大流,别人都写咱也写,另一方面,很大程度上是下意识地以文字代替语言,就好像要给他人解释代码,生怕哪段代码没有注释,无法卸掉口头给他人讲代码的责任一般。

2

这个世界惩罚自由散漫的人,也同时在惩罚循规蹈矩之人。人通过各种教条给自己设置了多个条条框框,在编织的牢笼里自得其乐,也必然会受到桎梏自吞苦果。

“注释”就是这样一个牢笼。

星爷曾经说过,能力越大,责任就越大。随着技术水平的日益提高,领导开始将更加复杂艰巨的任务放到我的肩头,肩负领导嘱托,怀抱精忠报国之心,我写的代码也开始越来越多,越来越复杂了,同时,代码里的注释也慢慢增多了。

写代码自有其客观规律,那就是:需要不断地修改、完善、优化。就像在泳池中不断变换各种泳姿一样,笔者孜孜不倦地调整、打磨代码,看着代码日益精益、完美,颇有一种乐在其中、虽九死而犹未悔的体会,以至于代码慢慢地变得面目全非,而注释基本上依然固执地保持着最初的模样,就好似已然开始自由泳,说明书却还是蛙泳的动作讲解,自由泳是绷脚掌,蛙泳是翻脚掌,欲不吃亏,可得乎?!

3

楞严经中说:如人以手,指月示人。彼人因指,当应看月。若复观指以为月体,此人岂唯亡失月轮,亦亡其指。就是说,假如有人用手指着月亮给你看,你应该顺着手指的方向去看月亮,如果你不看月亮,反而仔细地研究起这只纤纤玉手那纤细玉润的手指来,多半会像“不知妻美”的东哥那样失了分寸,动心而忍不了性的。

注释就是那根手指,代码才是那弯明月。

楞严经这段话的真正意思是:我们学习佛陀的经典,要通过这些语言文字,体悟它背后所蕴含的深深义理,靠此义理指示,明悟我们的清净佛心。不能执着在语言文字上,以为那就是佛心,就是佛法。那就永远找不到清净佛心了,因为把语言文字当作佛心,当作佛法,其实,已经失去了佛心真正的大圆满、大具足、大光明、大无碍了!

不同的是,代码的变化总是在不经意间悄悄发生的,曾几何时,注释这根手指所指向的已经不是最新代码这颗明月了,我本将心向明月,奈何明月照沟渠啊!

既然注释很难跟得上代码的变化,为什么那么多技术大牛都像模像样地给后晋菜鸟们谆谆教诲,告诫他们注释很重要,要养成写注释的习惯呢?我想主要原因应该可以归结到大多数员都不写文档的坏习惯上来。员这个群体大抵都没有多少忠君思想,跳槽也是家常便饭,无论是小白还是大牛,都不可避免地碰到接手别人代码的情形。从代码传承的角度,描述性强的注释可以起到帮助理解他人代码、尽快上手修改原有代码的作用。

人在江湖飘,谁能不挨刀,我相信很多人都遭遇过受困于别人天书般的代码望天长叹的时刻,那种无奈和抓狂实在刻骨铭心,所以,从利人利己的角度,都希望别人能写注释,而且写得越详细越好,最关键的,一定要和代码对应起来,不能驴唇不对马嘴。

可是,如果代码本身就可以解释自己呢?

如果说,注释面对人的世界,代码直接面向机器的世界,那么,如果代码本身既能面对人又能面对机器世界呢?如果注释充当的是人-机器之间的桥梁的话,那么,何不直接让代码充当这个桥梁呢?

据说孩子出生的时候,每对父母都会抓耳挠腮,反复掂量斟酌孩子的起名,过程之艰不忍描述。而想要写出阅读性强的代码来,对函数、变量的起名同样需要操碎了心,函数什么作用,变量干嘛用的,函数名称能涵盖它实现的所有作用吗,相似变量名称之间的歧义怎么解决,源文件怎么组织,函数长度怎么约束,枚举怎么定义,这些都直接影响代码的阅读性。这还仅仅是代码层面,设计方案层面呢?如果模块化做得不够好,模块之间耦合性强,改这里影响那里,不写注释把这些隐患描述出来,怎么能够保证之后正确修改呢?

所以,不是不可以不写注释,而是不写注释,就要孜孜于提高代码的阅读性,靠代码本身解释自己,这样实在是太难了!

可是,谁的人生又是轻松愉快的呢?坚持贯彻无注释主义,就可以破釜沉舟,逼迫自己写出模块化、结构化、可灵活修改、鲁棒性强、阅读性好的代码来,正所谓置之死地而后生也!

后记

也许,人本来就是很难团结的,员这个群体总是很容易分出多个阵营出来,在写不写注释上,也是仁者见仁智者见智,笔者只是抛砖引玉,并不代表唯一准确的观点,科学自有其客观规律,不容触犯,但同时,科学的大门异常宽广,容得你犯下任何错误。对于程序员这个群体,洒家始终怀有尊敬爱戴的情愫,所以,倘若本文有所冒犯,还请各位兄弟姐妹们见谅。



关键词: 代码 注释 程序

评论


相关推荐

技术专区

关闭