注释的恰当用法是弥补我们在用代码无法表达意图是遭遇的失败。注意,我用来“失败“一次。我是说真的。我们总无法找到不用注释就能表达自我的方法,所以总要有注释,这并不值得庆贺。
程序员应当负责将注释保持在可维护、有关联、精确的高度。我同意这一说法。但我更主张把力气用着写清楚代码上,直接保证无须编写注释。不准确的注释要比没注释坏的多。它们满口胡言。它们预期的东西永不能实现。它们设定了无需也不应再遵循的旧规则。
1.注释不能美化糟糕的代码:
写注释的常见动机之一是糟糕的代码的存在。我们编写一个模块,发现它令人困扰、乱七八糟,我们知道,它烂透了。我们告诉自己:”喔,最好写点注释“ 不!最好是吧代码弄干净!
带有少量注释的整洁而有表达力的代码,要比带有大量注释的零散而复杂的代码像样得多。与其花时间编写解释你搞出的糟糕的代码的注释,不如花时间清洁那段糟糕的代码。
2.警示:
用于警告其他程序员会出现某种后果的注释也是有用的。例如,下面的注释解释了为什么要关闭某个特定的测试用例:
// Don't run unless you have some time to kill
public void testWithReallyBigFile()
{
writeLinesToFile(100000000);
response.setBody(testFile);
String responseString = output.toString();
assertSubString("Content-Length: 10000000",responseString);
assertTrue(bytesSent>100000000);
}
3.废话注释:
有时,你会看到纯然是废话的注释。它们对于显然之事喋喋不休,毫无新意。例如:
/**
* Default constructor.
* /
protected AnnualDateRule() {
}
又或者:
/** The day of the month. */
private int dayOfMonth;
这类注释废话连篇,我们都学会了视而不见,读代码时,眼光不会停留在它们上面。最终当代码修改之后,这类注释就变成了谎言一堆。
用整理代码的决心替代创造废话的冲动吧。你会发现自己成为更优秀、更快乐的程序员。
4.括号后面的注释:
有时,程序员会在括号后面放置特殊的注释,代码如下:
尽管这对于含有深度嵌套结构的长函数可能有意义,但只会给我们更愿意编写的短小、封装的函数带来混乱,如果你发现自己想标记右括号,其实更应该做的是缩短函数。