我在不少地方看到这样一个观点,“请中止写注释,由于只有烂的代码才须要注释。”这个观点很是巧妙,它让我想起了孟子的一句话,“杨氏为我,是无君也;墨氏兼爱,是无父也。无父无君,是禽兽也。”git
动不动就骂别人是“禽兽”,我总以为有点不妥,这很不符合孟子的浩然之气啊。有些大牛也有孟子这样的觉悟,若是有人要他给本身的代码加上注释,就好像是对他的一种侮辱:“个人代码写得这么优雅,你难道看不懂吗?注释是多余的!”程序员
我必须得认可,每一个程序员都应该有一颗追求“优雅”的心,力争本身的代码更易阅读和理解——不仅是针对机器,还有咱们程序员同行。但不是每一个程序员在一开始都能写出“高标准”的代码的,就好像不是全部君王和百姓都能搞清楚孟子的治国齐家理念的。github
在我刚回洛阳的那段时间,过得很是痛苦。由于我刚接手了别人留下的一个项目,关于大宗期货交易的。后端代码是用 Java 写的,但有不少 bug 在里面,动不动就资金结算失败,甚至内存溢出,要解决这些问题,只有一个办法,就是完全搞懂这些代码。面试
不然,根本无从下手。这就好像,你和朋友开车出去自驾游,去很远很远的地方,朋友开累了,须要休息,这时候,若是你没考过驾照,那就抓瞎了,只能把车停路边,等朋友的疲劳消退了,才能继续上路。后端
我就抓瞎了。凭良心说,前同事留下的代码是精彩绝伦的,若是换作是我来写,真不必定能写得出来。毕竟大宗期货交易自己仍是有点难度的,须要竞价撮合,这个业务理解起来比股票还要复杂些。微信
股票涨了就赚,跌了就亏。期货不一样的,买涨能赚,买跌也能赚。不过业务上的复杂仍是次要的,重要的是代码里的注释很是稀有,就好像詹姆斯高斯林头上的发丝同样稀有。app
何况,国内程序员的英语功底你懂的,变量、方法、类、接口、枚举的命名没法作到真正意义上的名如其意。再加上,有些方法的行数多达三四百行,从头看到尾,看得只想捶本身。学习
没办法,个人解决办法就是,看懂一行就加一行注释,毕竟注释总比代码要容易理解啊。就好像,咱们在调用一个不熟悉的 API 时,只要代码的文档说清楚它是干吗的,咱们就能够用,就敢用,至于实现的细节,暂时没有理解也不要紧。spa
差很少花了两个月的时间(很是漫长、很是煎熬)吧,我总算是把项目中核心的代码给研究清楚了。搞清楚以后,那些以前怎么改都改不掉的 bug 也就迎刃而解了。blog
这也就是为何,我倡导你们去读源码的一部分缘由了,除了学习,读源码是解决 bug 的杀手锏。要读懂源码,注释是必不可少的。不信,你看看 Java 的源码,每一个变量、每一个方法、每一个类,注释都很是详细,详细到你替源码的做者感到心累。
在我看来,Java 源码的做者绝对是这个世界上最优秀的程序员,连他们都写注释,那些声称“请中止写注释”的号召者是否是要啪啪啪地打脸,直到打肿为止。
不要怀疑本身,写注释并不会证实你的代码就是烂代码。我相信,你应该买过电子产品,好比说鼠标、键盘、耳机、手机等等,全部的产品包装里除了产品自己,使用说明书是必不可少的。我就问一句,“手机没有使用说明书,咱这些后浪还能不会用?”
写注释不是咱们的错,软件原本就是复杂的。尤为是咱们这些英语不是主力语言的人来讲,注释显得尤其重要。我可能属于记忆力很差的那一种,隔个十天半个月,再去回头看那些我本身敲的代码,有时候真有点见着陌生人的感受:“这代码是我写的吗?怎么有点面生啊?”
大部分人写的代码都要升级重构,对吧?不管是语言自己版本的升级,仍是咱们自身能力的成长。假如在升级重构的时候,没有这些注释的帮助,真有点爬泰山的感受,累啊,亲。
再者说,大牛也不敢保证本身的代码是没有问题的,对吧?但注释是不会骗人的,它的意义是明确的。你可能会忘记代码是干吗的,但我敢保证,注释可以唤醒你的记忆。
写出好的、有意义的注释实际上是有难度的,就像写代码同样。在追求卓越的路上,代码和注释实际上是相辅相成的。注释会让你的代码更易阅读,代码会让你的注释更富有逻辑。
即使是你的代码已经优雅到不须要注释,那只是在你的层面上。对于你的同事,你代码后来的负责者,就不必定了。所见略同的英雄并不会不少,你觉得很优雅的代码没准在别人眼里就是一坨垃圾,而你的注释极可能会帮助别人“恍然大悟”,明白代码的意义。乖乖地写注释吧,对你对别人都有好处。
另外,我想说一句,注释就好像是代码的一个蓝图,也或者是对代码的一个总结。在你写代码以前,脑子里确定要想清楚你要实现什么,怎么实现,把这些做为注释写下来绝对能够帮助你写出更优雅的代码。在代码写完以后,经过注释进行总结,还能对代码进行一些升华,没准还能在总结的过程当中想到更好的代码方案。
我还见到有大牛信誓旦旦地说,写注释就好像是给不会游泳的人扔一个救生圈,他永远也学不会游泳。咋眼一看,这句话说得颇有道理,对吧?在大牛们看来,要让一个新人快速成长,最好的办法就是把没有注释的代码扔给他看。
纯属扯淡,恐怕这个新人没入门就放弃了吧?我已经三十一岁了,不,我已经十八岁了,还不会游泳呢?别听那些大牛们的鬼话,我就不信,他本身没写过注释。
总之一点,注释并不会妨碍你写出优雅简洁的代码,它只是程序固有的一部分而已。
若是以为文章对你有点帮助,请微信搜索「 沉默王二 」第一时间阅读,回复「简历」更有一份 3000+ 人下载过的优质简历模板,今后你的简历不再会石沉大海了。本文已收录 GitHub,传送门~ ,里面更有大厂面试完整考点,欢迎 Star。
我是沉默王二,一枚有颜值却靠才华苟且的程序员。关注便可提高学习效率,别忘了三连啊,点赞、收藏、留言,我不挑,嘻嘻。