|
写注释,是一个好习惯,应该说是一个非常敬业,非常专业,非常......勤奋的好习惯,相比于某些喜欢偷懒,一句注释都懒得写的人来说,这至少态度就非常专业和诚挚。
然而,这不代表 好 和 优秀。
我们仔细看里面的注释,代码内部那些,绝大多数,都只是对下面一行代码的解释。
然而,这种解释 是属于那种 重复一次代码在干什么 的内容。
其实,“解释代码在干什么”这种事情应该是 命名 的任务。
正名,如果名字不能说明自己在干什么,那这样的名字是没用的。
举个例子,那个Ioctl的调用,这种就是多余的。
宏已经明明白白说明了 打开RXON。 还要解释,打开接收允许,还说什么默认是关闭......这种事情我们一点都不关心;
还有一种重复注释,更是该死。
比如一个死循环等待 listen成功的。
在while上边已经有一句解释,永远等待listen.....额,这种解释还是会让人误解的。什么叫永远等待listen,还不如说 一直等到listen成功;
然后在循环内部尾处又加了一句 如果失败了,再listen一次。
这个短短的函数中还有一种注释更应该警惕。
就是函数开始的第一段注释。
它下面的事情是 toggleLED(),该死的是,它的注释写的内容是
关掉一个LED,表示已经进入监听状态;
当接收到信息时,LED会亮;
首先这段注释和这个toggleLED()调用是严重不对称的。
这段注释,如果加在函数体外,在函数名以前,会更加合适。
注释都是就近原则,既然他放在内部,又放在一句代码以前,人家就会认为这是解释 下一行代码的,可是,这其中完全看不到相关的内容。
对于这种注释,我只有一个建议:
取一个好名字,然后让所有注释都滚蛋!
忘了是那本书里写的,如果你需要在一行代码前加注释,那也许你更应该在这个地方抽离一个函数(然后,取一个好名字)。
从外观上看,在函数内部大量注释,肯定是不好的。 |
|