好吧,既然这是关于注释和代码的,让我们看一些实际的代码。比较这个典型的代码:
float a, b, c; a=9.81; b=5; c= .5*a*(b^2);
对于这个自我记录的代码,它显示了正在做的事情:
const float gravitationalForce = 9.81;
float timeInSeconds = 5;
float displacement = (1 / 2) * gravitationalForce * (timeInSeconds ^ 2);
然后是这个记录在案的代码,它更好地解释了为什么要这样做:
/* compute displacement with Newton's equation x = vₒt + ½at² */
const float gravitationalForce = 9.81;
float timeInSeconds = 5;
float displacement = (1 / 2) * gravitationalForce * (timeInSeconds ^ 2);
最终版本的代码作为文档需要零注释:
float computeDisplacement(float timeInSeconds) {
const float gravitationalForce = 9.81;
float displacement = (1 / 2) * gravitationalForce * (timeInSeconds ^ 2);
return displacement;
}
这是一个糟糕的评论风格的例子:
const float a = 9.81; //gravitational force
float b = 5; //time in seconds
float c = (1/2)*a*(b^2) //multiply the time and gravity together to get displacement.
在最后一个例子中,当变量应该被描述性命名时使用注释,当我们可以清楚地看到操作是什么时,总结了操作的结果。在任何一天,我都更喜欢自我记录的第二个示例,也许这就是你的朋友在说自我记录的代码时所说的。
我会说这取决于你正在做的事情的背景。对我来说,在这种情况下,自我记录的代码可能就足够了,但是详细说明背后的方法(在这个例子中,方程)的注释也是有用的。