好吧,由于这是关于注释和代码的,所以让我们看一些实际的代码。比较以下典型代码:
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.
在最后一个示例中,当变量应被描述性地命名时使用注释,并且当我们清楚地看到操作是什么时,对操作的结果进行汇总。我更喜欢今天没有自我记录的第二个例子,也许这就是您的朋友在谈论自我记录的代码时谈论的话题。
我要说的是,这取决于您正在做的事情。对我来说,在这种情况下,自我记录的代码可能就足够了,但是详细说明背后完成工作背后的方法的注释(在此示例中,公式)也很有用。