Clean Code读书笔记--4.注释

213 阅读2分钟

4. 注释

别给糟糕的代码加注释--重新写吧

注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败

注释总是一种失败。我们总无法找到不用注释就能表达自我的方法,所以总要有注释,这并不值得庆祝。

注释会撒谎。注释存在的时间越久,就离其所描述的代码越远,越来越变得全然错误。原因很简单,程序员不能坚持维护注释。

只有代码能忠实地告诉你它做的事。那是唯一真正准确的信息来源。所以,尽管有时也需要注释,我们也该多花心思尽量减少注释量。

4.1 注释不能美化糟糕的代码

写注释的常见动机之一是糟糕代码的存在。我们编写一个模块,发现它令人困扰,乱七八糟。我们知道,它烂透了。我们告诉自己:“喔,最好写点注释!”不!最好是把代码弄干净!!!

与其花时间编写解释你搞出的糟糕的代码的注释,不如花时间清洁那堆糟糕的代码。

4.2 用代码来阐述

写注释之前,花几秒钟想想。很多时候,简单到只需要创建一个描述与注释所言同一事物的函数即可。你愿意看到这个:

// check to see if the employee is eligible for full benefits
if((employee.flags & HOURLY_FLAG) && (employee.age > 65))

还是这个?

if(employee.isEligibleForFullBenefits())

下面的代码不是会简洁很多?而且对于不需要关注具体判断逻辑的代码阅读者来说,下面的代码也更便于理解。

4.3 好注释

当然,有些注释是必须的,也是有利的,来看一看值得写的注释:

  • 法律信息
  • 提供信息的注释
  • 对意图的解释
  • 阐述
  • 警示或者提醒
  • TODO 注释
  • 放大:注释可以用来放大某种看起来不合理之物的重要性

4.4 坏注释

书中提到了很多不好的注释,在我看来常见不好的注释总结就以下几种:

  • 废话注释:代码能解释还写注释
  • 误导性注释
  • 位置标记:在代码中想标记位置,使用
    // --------- Actions ------------
    
  • 注释掉的代码:既然已经注释掉代码了,就不要不敢去删除