听说,共产党员入党时需求面向党旗宣读誓词,在庄重、庄严的气氛中,发誓人怀有着拳拳报国之心,压抑着胸中的激荡不已,热泪盈眶、目光坚定地朗诵简练有力的誓词,沉甸甸的誓词中有一句话特别鼓舞人心:为共产主义斗争终身。
“主义”真实是一个好东西,它看似虚无缥缈,却可以辅导国家和公民的作业和日子。当今社会正处于剧烈革新之中,各种主义粉墨登场,占有了不同集体的精神国际,犬儒主义、乐观主义、民本主义、民族主义、实用主义、贸易保护主义、自由主义、资本主义、社会主义、达达主义、完美主义、教条主义等等,不胜枚举,每一个主义承托着一个思维国际,各种主义让咱们取得新知,遭到教益,笔者在多年的科研作业生计中摸爬滚打,一路荆棘,也逐渐在写代码方面形成了自己的主义-无注释主义!
1
有人说,天主给你关上一扇门,必定会为你敞开一扇窗,笔者对此金句点头低眉,深认为然。就拿我来说吧,为人迟钝,不善言谈,典型一个三脚跺不出一个屁来的闷葫芦,但是又颇喜写作,尽管文笔欠佳,却也常常文思涌动,恨不得剥皮为纸,以血为墨,折骨为笔,写它个一死方休。
笔者不仅以文字记载作业日子、思维感悟,从前,还以代码为田,笔耕不辍,到了不写注释就不写代码的境地。当然,笔者的注释也难脱俗套,领域基本上只限于解说代码的规划思路、具体完成的注意事项、要害变量的效果、函数调用参数的阐明等内容。时过境迁,其时的心境也已难寻,现在想来,其时之所以要写注释,一方面是安分守己随大流,他人都写咱也写,另一方面,很大程度上是下意识地以文字替代言语,就好像要给他人解说代码,生怕哪段代码没有注释,无法卸掉口头给他人讲代码的职责一般。
2
这个国际赏罚自由散漫的人,也一起在赏罚安分守己之人。人经过各种教条给自己设置了多个条条框框,在织造的牢笼里自得其乐,也必定会遭到枷锁自吞苦果。
“注释”便是这样一个牢笼。
星爷从前说过,才能越大,职责就越大。跟着技能水平的日益进步,领导开端将愈加杂乱艰巨的使命放到我的肩头,担负领导嘱托,怀有精忠报国之心,我写的代码也开端越来越多,越来越杂乱了,一起,代码里的注释也渐渐增多了。
写代码自有其客观规律,那便是:需求不断地修正、完善、优化。就像在泳池中不断改换各种泳姿相同,笔者孜孜不倦地调整、打磨代码,看着代码日益精益、完美,颇有一种乐在其中、虽九死而犹未悔的领会,以至于代码渐渐地变得改头换面,而注释基本上仍然顽固地保持着开端的容貌,就恰似已然开端自由泳,阐明书却仍是蛙泳的动作解说,自由泳是绷脚掌,蛙泳是翻脚掌,欲不吃亏,可得乎?!
3
楞严经中说:如人以手,指月示人。彼人因指,当应看月。若复观指认为月体,此人岂唯亡失月轮,亦亡其指。便是说,假如有人用手指着月亮给你看,你应该顺着手指的方向去看月亮,假如你不看月亮,反而细心地研讨起这只纤纤玉手那纤细玉润的手指来,多半会像“不知妻美”的东哥那样失了尺度,动心而忍不了性的。
注释便是那根手指,代码才是那弯明月。
楞严经这段话的真实意思是:咱们学习佛陀的经典,要经过这些言语文字,体悟它背面所包含的深深义理,靠此义理指示,明悟咱们的清净佛心。不能执着在言语文字上,认为那便是佛心,便是佛法。那就永久找不到清净佛心了,由于把言语文字当作佛心,当作佛法,其实,现已失去了佛心真实的大圆满、大具足、大光亮、大无碍了!
不同的是,代码的改变总是在不经意间悄然产生的,曾几何时,注释这根手指所指向的现已不是最新代码这颗明月了,我本将心向明月,怎样办明月照水沟啊!
已然注释很难跟得上代码的改变,为什么那么多技能大牛都像模像样地给后晋菜鸟们耳提面命,劝诫他们注释很重要,要养成写注释的习气呢?我想主要原因应该可以归结到大多数程序员都不写文档的坏习气上来。程序员这个集体大略都没有多少忠君思维,换岗也是粗茶淡饭,无论是小白仍是大牛,都不可避免地碰到接手他人代码的景象。从代码传承的视点,描绘性强的注释可以起到协助了解他人代码、赶快上手修正原有代码的效果。
人在江湖飘,谁能不挨刀,我信任很多人都遭遇过受困于他人天书般的代码望天长叹的时间,那种无法和抓狂真实铭肌镂骨,所以,从利人利己的视点,都期望他人能写注释,并且写得越具体越好,最要害的,必定要和代码对应起来,不能牛头不对马嘴。
但是,假如代码自身就可以解说自己呢?
假如说,注释面临人的国际,代码直接面向机器的国际,那么,假如代码自身既能面临人又能面临机器国际呢?假如注释充任的是人-机器之间的桥梁的话,那么,何不直接让代码充任这个桥梁呢?
听说孩子出世的时分,每对爸爸妈妈都会抓耳挠腮,重复衡量酌量孩子的起名,过程之艰不忍描绘。而想要写出阅览性强的代码来,对函数、变量的起名相同需求操碎了心,函数什么效果,变量干嘛用的,函数称号能包括它完成的一切效果吗,类似变量称号之间的歧义怎样处理,源文件怎样安排,函数长度怎样束缚,枚举怎样界说,这些都直接影响代码的阅览性。这还仅仅是代码层面,规划方案层面呢?假如模块化做得不够好,模块之间耦合性强,改这儿影响那里,不写注释把这些危险描绘出来,怎样可以确保之后正确修正呢?
所以,不是不可以不写注释,而是不写注释,就要孜孜于进步代码的阅览性,靠代码自身解说自己,这样真实是太难了!
但是,谁的人生又是轻松愉快的呢?坚持遵循无注释主义,就可以背水一战,强逼自己写出模块化、结构化、可灵敏修正、鲁棒性强、阅览性好的代码来,正所谓置之死地而后生也!
跋文
或许,人本来便是很难联合的,程序员这个集体总是很简单分出多个阵营出来,在写不写注释上,也是仁者见仁智者见智,笔者仅仅抛砖引玉,并不代表仅有精确的观念,科学自有其客观规律,不容得罪,但一起,科学的大门反常广大,容得你犯下任何过错。关于程序员这个集体,洒家一直怀有敬重敬爱的情愫,所以,假使本文有所得罪,还请各位兄弟姐妹们见谅。