收藏本站 The Best Quality of Power Equipment

了解一下写代码不写注释的无注释主义者

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


笔者不仅以文字记录工作生活、思想感悟,曾经,还以代码为田,笔耕不辍,到了不写注释就不写代码的地步。当然,笔者的注释也难脱俗套,范畴基本上只限于解释代码的设计思路、具体实现的注意事项、关键变量的作用、函数调用参数的说明等内容。


时过境迁,当时的心境也已难寻,现在想来,当时之所以要写注释,一方面是循规蹈矩随大流,别人都写咱也写,另一方面,很大程度上是下意识地以文字代替语言,就好像要给他人解释代码,生怕哪段代码没有注释,无法卸掉口头给他人讲代码的责任一般。


2


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


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


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




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


3


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


注释就是那根手指,

代码才是那弯明月。


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


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


既然注释很难跟得上代码的变化,为什么那么多技术大牛都像模像样地给后晋菜鸟们谆谆教诲,告诫他们注释很重要,要养成写注释的习惯呢?我想主要原因应该可以归结到大多数程序员都不写文档的坏习惯上来。


程序员这个群体大抵都没有多少忠君思想,跳槽也是家常便饭,无论是小白还是大牛,都不可避免地碰到接手别人代码的情形。从代码传承的角度,描述性强的注释可以起到帮助理解他人代码、尽快上手修改原有代码的作用。

了解一下写代码不写注释的无注释主义者



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


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


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


据说孩子出生的时候,每对父母都会抓耳挠腮,反复掂量斟酌孩子的起名,过程之艰不忍描述。而想要写出阅读性强的代码来,对函数、变量的起名同样需要操碎了心,函数什么作用,变量干嘛用的,函数名称能涵盖它实现的所有作用吗,相似变量名称之间的歧义怎么解决,源文件怎么组织,函数长度怎么约束,枚举怎么定义,这些都直接影响代码的阅读性。


这还仅仅是代码层面,设计方案层面呢?如果模块化做得不够好,模块之间耦合性强,改这里影响那里,不写注释把这些隐患描述出来,怎么能够保证之后正确修改呢?


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


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


相关文章

在线留言

*

*

◎欢迎您的留言,您也可以通过以下方式联系我们:

◎客户服务热线:021-51095123

◎邮箱:xin021@126.com

021-51095123
扫描二维码关注我们

扫描二维码 关注我们