当几个程序员一起开始一项工程时,他们常常要论述采用什么样的编码标准。这些标准很少有助于提高产品的质量。这些标准常常涉及下列的问题,如:
我们应该缩进2个、4个还是8个空格?
我们应该在if的语句右边的圆括号后插入一个空格吗?如下所示:
还是像这样不加空格?
在大规模工程开始时,我们花费数周讨论标准问题。我们得出的结论是,尽管标准化有好处,但是标准的清单应该尽可能的短小,并且每个标准都应该出于清晰的工程原理。上面的这两个例子都不满足这些标准。
我们要了解的另一件事情是在什么领域执行这些标准,答案是接口和实现。一个良好的接口比一个良好的实现更加重要。接口会对客户端有直接的影响,它们也有全局的含义。实现应该只影响代码的作者和维护人员。
在大型项目中,更是有理由对接口的标准严格规定。修复接口通常比修复实现更难,更耗费成本。假设该接口是一个良好的封装,抛出一个低劣的实现并用一个更好的实现替代它,这通常并不是很难。