99个常见编程错误

第1章 基础问题

说一个问题是基础的,并不就是说它不是严重的或不是普遍存在的。事实上,本章所讨论的基础问题的共同特点比起在以后章节讨论的技术复杂度而言,可能更侧重于使人警醒。这里讨论的问题由于它们的基础性,在某种程度上可以说它们存在于几乎所有的C++代码中。

常见错误1:过分积极的注释

很多注释都是画蛇添足。它们只会让源代码更难读、更难维护,并经常把维护工程师引入歧途。考虑下面的简单语句:

1. a = b; // 将b赋值给a

这个注释难道比代码本身更能说明语句的意义吗?其实它是完全无用的。事实上,它比完全无用还要坏。它是害人精。首先,这条注释转移了代码阅读者的注意力,增加了阅读量,从而使代码更费解。其次,要维护的东西更多了,因为注释也是要随着它描述的代码的更改而更改的。第三,对注释的更改常常被忽视了 。

1. c = b; // 将b赋值给a

仔细的维护工程师不会武断地说注释是错的 ,所以他就被迫要去检视整个程序以确定注释到底是错了的呢,还是好意的呢(c可能是a的引用),还是微妙的呢(赋值给c可能引发一些传播效应以使a的值也发生相应变化)等等,总之这一行就根本不应该带注释。

1. a = b;

该代码本来的样子就最清楚地表明了其意义,也不用维护额外的注释。这在精神上也符合老生常谈,亦即"最有效率的代码就是根本不存在的代码"。这条经验对于注释也适用:最好的注释就是根本用不着写的注释,因为要注释的代码已经"自注释"了。

另一些常见的非必要的注释的例子经常可以在类型的定义里见到,它们要么是病态的编码标准的怪胎,要么就是出自C++新手: 1. class C {

2. // 公开接口

3. public:

4. C(); // 默认构造函数

5. ~C(); // 析构函数

6. // ...

7. };

99个常见编程错误相关文档

最新文档

返回顶部