Google代码健康:注释还是不注释
本文源于Google公司的马桶上的健康代码,作者:Chris Lewis & Bob Nystrom
在阅读代码时,通常没有什么比有适当的注释更有用的了。 但是,有注释也并不总是好事。 有时需要注释的原因可能表明应该开展代码重构活动。
如果无法使编写的代码不言自明,请使用注释。 如果需要用注释来解释一段代码的作用,请首先尝试下面的方法:
- 引入解释型变量
反例:
// Subtract discount from price.
finalPrice = (numItems * itemPrice) - min(5, numItems) * itemPrice * 0.1;
正例:
price = numItems * itemPrice;
discount = min(5, numItems) * itemPrice * 0.1;
finalPrice = price - discount;
- 抽取一个方法
反例:
// Filter offensive words.
for (String word : words) { ... }
正例:
filterOffensiveWords(words);
- 使用更具描述性的标识符名称
反例:
int width = ...; // Width in pixels.
正例:
int widthInPixels = ...;
- 为代码的假设添加检查
反例:
// Safe since height is always > 0.
return width / height;
正例:
checkArgument(height > 0);
return width / height;
在某些情况下,评论可能会有所帮助:
- 揭示意图:解释代码为什么要执行某些操作(而不是其他操作)
// Compute once because it’s expensive.
- 避免未来热心的程序员错误地“修复”了不该修复的代码
// Create a new Foo instance because Foo is not thread-safe.
- 澄清:在代码评审期间可能出现的问题或代码读者可能遇到的问题
// Note that order matters because...
- 解释看起来像不良的软件工程实践的理由
@SuppressWarnings("unchecked") // The cast is safe because...
另一方面,请避免仅重复代码的注释。 这些只是噪音:
示例1:
// Get all users.
userService.getAllUsers();
示例2:
// Check if the name is empty.
if (name.isEmpty()) { ... }
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!