什么时候需要用到注释?
应该是在我们用代码表达意图时遭遇失败的时候,才使用注释来弥补表达力不足的代码(法律信息和版权保护信息不在此范畴)。其他时候不建议使用注释,原因如下
- 注释存在的时间越久越久,则其陈述的事实就有可能离其当初描述的代码越远
- 程序员不能坚持维护注释,在很多时候维护注释都是一件需要额外精力和时间成本的事情,程序员大多懒得做这些事情
- 带有少量注释的整洁而有表达力的代码,要比带有大量注释的零碎而复杂的代码像样的多。
什么是好注释?
首先声明,唯一好的办法是尽量想办法不去写注释,而不是想尽办法写好注释
-
简化复杂信息or明确模糊信息的注释。
例如为复杂的正则表达式提供注释,为复杂的数值计算公式提供注释,为动态语言模糊返回值加上注释。去除此类注释,可以想方设法封装其复杂,曝露富含意义的接口(包装成类、函数等)
-
对意图的阐释
当没办法写出通顺可读性较好(即逻辑性较好)的代码的时候,例如使用了无法更改的库函数接口,那么打这种“别扭”代码的同时,最好加上注释来解释为什么要这样做
-
警告
其实是对第二点的补充,适当的警告会避免重要代码被随意更改,尤其例如在不是本人对代码进行重构的时候。
-
TODO 注释
记得定时删除和更新
-
放大
用注释来放大某段代码的重要性。有些代码看局部是无法知道其对后面执行有多么总要,在重构的时候往往被无意“优化”,所以在必要的时候,针对某些代码可以写注释来说明其重要性
什么是坏注释?
-
喃喃自语型
一旦要写注释就要重视,注释一定是一个需要花时间去写的东西,而不是随意写出一些丢失了大量信息的注释。这种注释更像是一种当事人脑中注意事项的“浓缩”,往往可能因为写注释的人不留心,忽略了很多必要上下文,导致下次来查看注释的人陷入了猜谜语的境地,最后迫使读者去查看更多信息来猜注释的意图。
-
二手马后炮or误导信息
例如函数头部根据代码来用自然语言重新陈述了一遍代码干了什么。不好的原因一是它没有提供更多信息,二是它没有代码精准。
-
每个函数都要有注释
放屁
-
右花括号的结束注释
当你认为有必要在花括号的结束括号(即右花括号)写上一个注释来方便读者查看代码的时候,也许你真正应该做的事情是缩短函数体。
-
注释掉的代码(且不留注释原因)
用版本控制工具就已经可以很好的追溯旧代码了,如无必要就别直接留注释代码,如果非要留,那么请写明注释原因。
-
与代码弱联系的注释
注释和代码之间应该是相辅相成,注释来解释代码,代码来印证注释,所以绝对要避免注释不清楚,而且千万避免注释本身就不清楚,然后变得注释好像都需要解释,而不能看代码看出来。