5..注释—只解释了“how”却没有解释“why”
入门级的编程课程通常会教育学生们写代码前先写注释、而且要尽量多注释。 这种教育的出发点是“多注释肯定比少注释好、少注释肯定比没注释好”。 可不幸的是,很多的程序员把这当成了一种任务,对每一行代码都注释一下。 这就是为什么会经常看到像Jeff Atwood在他的博客文章Coding Without Comments提到的代码:
r = n / 2; // 让 r 等于 n 除以 2
// 当 r - (n/r) 大于 t 时进行循环
while ( abs( r - (n/r) ) > t ) {
r = 0.5 * ( r + (n/r) ); // 设置 r 等于 r + (n/r) 的一半
}
经过这样的注释,你否明白了这段代码是干什么的?的确,我也没明白。问题就在于,虽然有大量的注释,可它们只是描述了代码是干什么了,却没有说明代码为什么要这样写。
现在,请看一下我们采用另外一种方式对同一段代码进行的注释:
// 使用牛顿-Raphson算法求n的平方根近似值
r = n / 2;
while ( abs( r - (n/r) ) > t ) {
r = 0.5 * ( r + (n/r) );
}
这就好多了!也许我们还是不能完全明白这段代码的作用,但至少是有了一点方向了。
注释是用来帮助读者理解代码的,不是用来解释语法的。 我可以大胆的认为,读者对for循环的工作原理是了解的;所以没必要写这样的注释:“// 对客户列表进行for循环操作”。 读者不明白的是你的代码是做什么用的,你为什么要采用这种方式实现它。
6. 上司不懂编程,外行指导内行!
管理工作不是一种简单的工作。人是一种让人很讨厌的动物; 我们善变、喜怒无常,我们都自以为天下第一。 想让这样的一群人都感到满意和团结,你需要付出像山一样大的努力。 然而,这并不意味着管理者就可以在对下属的工作毫不理解的情况下进行管理。 当管理者对我们的工作没有一点知识概念时,后果只会是需求频繁变动,不现实的工期,普遍的挫折感(管理者和开发人员)。 程序员们对此的抱怨相当普遍,这也是产生争执不合的根源(就像一个欢闹的卡通片)。