Skip to content

第六章 写出言简意赅的注释

如果你要写注释,最好把它写得精确——越明确和细致越好。另外,由于注释在屏幕上也要占很多的地方,并且需要花更多的时间来读,因此,注释也需要很紧凑。

关键思想

注释应当有很高的信息/空间率。

让注释保持紧凑

下面的例子是一个 C++ 类型定义的注释

cpp
// The int is the CatagoryType.
// Hte first float in the inner pair is the 'score'
// the second is the 'weight'
type of hash_map<int, pair<float, float>> ScoreMap;

可是为什么解释这个例子要用三行呢?用一行不就可以了吗?

cpp
// CategoryType -> (score, weight)
type of hash_map<int, pair<float, float>> ScoreMap;

避免使用不明确的代词

润色粗糙的句子

精确地描述函数的行为

用输入、输出例子来说明特别的情况

对于注释来讲,一个精心挑选的输入/输出例子比千言万语还有效。

例如,下面是一个用来移除部分字符串的通用函数:

java
// Remote the suffix / prefix of "chars" from the input src
String Strip(String src, String chars) { ... }

这条注释不是很精确,因为它不能回答下列问题:

  • chars 是整个要移除的子串,还是一组无序的字母?
  • 如果在 src 的结尾有多个 chars 会怎样?

然而一个精心挑选的例子就可以回答这些问题:

java
// Example: Strip("/abba/a/ba", "ba") return "/a/"
String Strip(String src, String chars) { ... }

这个例子展示了Strip()的整个动能。请注意,如果一个更简单的示例不能回答这些问题的话,它就不会那么有用

java
// Example: Strip("ab", "a") return "b"
String Strip(String src, String chars) { ... }

声明代码的意图

“具名函数参数”的注释

采用信息量高的词

总结

本章是关于如果把更多的信息装入更小的空间里。下面是一些具体的提示:

  • 当像 it 和 this 这样的代词可能指代很多个事物时,避免使用它们。
  • 尽量精确的描述函数的行为。
  • 在注释中用精心挑选的输入/输出例子进行说明
  • 声明代码的高层次意图,而非明显的细节
  • 用嵌入的注释来解释难以理解的函数参数
  • 用含义丰富的词来时注释简洁