background image

程序员的十大烦恼

每个程序员都有自己烦恼的事。不论这事指的是范围蠕变

(scope creep),

 

还是指匈牙利变量命名

(Hungarian notation),还是有臭味的同事,我们都

 

明白,这是我们有我们行业里的特定的烦恼。 下面要说的就是十大让程序员们
烦恼的事情,这是我从最近的在

StackOverflow 上的一个调查里整理出来的,

并且掺杂了一些我个人的经验:

  

1. 

 — 

注释

只解释了

how”

却没有解释

why”

  入门级的编程课程通常会教育学生们写代码前先写注释、而且要尽量多注释
 

”  

这种教育的出发点是 多注释肯定比少注释好、少注释肯定比没注释好 。 可不

 

幸的是,很多的程序员把这当成了一种任务,对每一行代码都注释一下。 这就
是为什么会经常看到像

Jeff Atwood 在他的博客文章 Coding Without 

Comments 提到的代码:

r = n / 2; 

//   

 

等于

 

除以

//   

r - (n/r) 

 

大于

 

时进行循环

while

 ( abs( r - (n/r) ) > t ) { 

r = 0.5 * ( r + (n/r) ); 

// 

 

设置

 

等于

r + (n/r) 的一半 

  } 

  经过这样的注释,你否明白了这段代码是干什么的

?

 

的确,我也没明白。问

题就在于,虽然有大量的注释,可它们只是描述了代码是干什么了,却没有说
明代码为什么要这样写。

  现在,请看一下我们采用另外一种方式对同一段代码进行的注释

:

// 使用牛顿-Raphson 算法求 n 的平方根近似值  

r = n / 2; 

while

 ( abs( r - (n/r) ) > t ) { 

r = 0.5 * ( r + (n/r) ); 

  这就好多了

!也许我们还是不能完全明白这段代码的作用,但至少是有了一

点方向了。

 

  注释是用来帮助读者理解代码的,不是用来解释语法的。 我可以大胆的认
为,读者对

for 循环的工作原理是了解的;

所以没必要写这样的注释:

// 对客

户列表进行

for

循环操作 。读者不明白的是你的代码是做什么用的,你为什么

要采用这种方式实现它。

  

2. 干扰