何谓“好的代码”?
“好的代码”应能工作,应当没有错误,具有可读性和可维护性。有的机构有代码“标准”,供所有的开发人员遵循,但每个人对于“什么是最好的”以及“规则太多或太少”有着不同的看法。理论和方法也很多,例如马克开伯复杂计算法 (McCabe Complexity metrics) 就是一种。这种方法使人过分考虑标准和规则,从而限制了产量和创造性。“同事互检”( Peer reviews) 和“伙伴检察”(buddy checks) 中使用的代码分析等工具可以被用于检察错误和执行标准。
对于 C 和 C++ 代码,在建立规则/标准时,这里有一些典型的思路。但不一定适用于一切情况:
ü 减少或排除全局变量的使用。
ü 使用说明性的函数和方法名 —— 使用大、小写字符,避免用缩写,使用满足要求的说明文字来进行充分的描述 (使用超过 20 个字符也不致超行)。取名要与功能一致。
ü 使用说明性的变量名 —— 使用大、小写字符,避免用缩写,使用满足要求的说明文字来进行充分的描述 (使用超过 20 个字符也不致超行)。取名要与功能一致。
ü 函数和方法的大小要尽可能小 —— 最好不超过 100 行,少于 50 行最好。
ü 在函数代码前面的函数的说明文字应当清楚。
ü 书写代码应便于阅读。
ü 在水平方向和垂直方向都留出足够的空间
ü 每行代码字符数不超过 70 个
ü 每条语句占 1 行
ü 一个程序内的代码风格应一致 (在使用括弧、缩排、和命名方式等方面)
ü 注释内容宁多勿少,通常注释行的数量 (包括开始部分) 应当不少于代码行的数量
ü 不管应用程序多么小,都应有文档,包括程序功能的概述和流程图 (哪怕只有几行字,也比没有要好)。如果可能的话,最好有单独的流程图和详细的程序文档。
ü 尽最大可能使用错误处理过程,并对状况和错误进行记录。
ü 在使用 C++ 时,为了减少复杂程度和提高可维护性,应当避免类的继承的层数过多 (这取决于应用程序的大小和复杂程度)。除要尽量减少继承的层次以外,还应少用超负荷运算符 (minimize use of operator overloading)。使用 Java 语言可以消除多级继承和运算符超负荷。
ü 在使用 C++ 时,保持类的方法不要太大,对于每各类的方法,代码行不超过 50 行为最佳。
ü 在使用 C++ 时,应自由进行例外的处理 (make liberal use of exception handlers)