Clean Code - 注释

什么时候需要用到注释?

应该是在我们用代码表达意图时遭遇失败的时候,才使用注释来弥补表达力不足的代码(法律信息和版权保护信息不在此范畴)。其他时候不建议使用注释,原因如下

  • 注释存在的时间越久越久,则其陈述的事实就有可能离其当初描述的代码越远
  • 程序员不能坚持维护注释,在很多时候维护注释都是一件需要额外精力和时间成本的事情,程序员大多懒得做这些事情
  • 带有少量注释的整洁而有表达力的代码,要比带有大量注释的零碎而复杂的代码像样的多。

什么是好注释?

首先声明,唯一好的办法是尽量想办法不去写注释,而不是想尽办法写好注释

  1. 简化复杂信息or明确模糊信息的注释。

    例如为复杂的正则表达式提供注释,为复杂的数值计算公式提供注释,为动态语言模糊返回值加上注释。去除此类注释,可以想方设法封装其复杂,曝露富含意义的接口(包装成类、函数等)

  2. 对意图的阐释

    当没办法写出通顺可读性较好(即逻辑性较好)的代码的时候,例如使用了无法更改的库函数接口,那么打这种“别扭”代码的同时,最好加上注释来解释为什么要这样做

  3. 警告

    其实是对第二点的补充,适当的警告会避免重要代码被随意更改,尤其例如在不是本人对代码进行重构的时候。

  4. TODO 注释

    记得定时删除和更新

  5. 放大

    用注释来放大某段代码的重要性。有些代码看局部是无法知道其对后面执行有多么总要,在重构的时候往往被无意“优化”,所以在必要的时候,针对某些代码可以写注释来说明其重要性

什么是坏注释?

  1. 喃喃自语型

    一旦要写注释就要重视,注释一定是一个需要花时间去写的东西,而不是随意写出一些丢失了大量信息的注释。这种注释更像是一种当事人脑中注意事项的“浓缩”,往往可能因为写注释的人不留心,忽略了很多必要上下文,导致下次来查看注释的人陷入了猜谜语的境地,最后迫使读者去查看更多信息来猜注释的意图。

  2. 二手马后炮or误导信息

    例如函数头部根据代码来用自然语言重新陈述了一遍代码干了什么。不好的原因一是它没有提供更多信息,二是它没有代码精准。

  3. 每个函数都要有注释

    放屁

  4. 右花括号的结束注释

    当你认为有必要在花括号的结束括号(即右花括号)写上一个注释来方便读者查看代码的时候,也许你真正应该做的事情是缩短函数体。

  5. 注释掉的代码(且不留注释原因)

    用版本控制工具就已经可以很好的追溯旧代码了,如无必要就别直接留注释代码,如果非要留,那么请写明注释原因。

  6. 与代码弱联系的注释

    注释和代码之间应该是相辅相成,注释来解释代码,代码来印证注释,所以绝对要避免注释不清楚,而且千万避免注释本身就不清楚,然后变得注释好像都需要解释,而不能看代码看出来。

上一篇:maven生命周期clean,compile,install,package区别


下一篇:定时删除ES索引shell脚本