团队应该一致同意采用一套简单的格式规则,可以运用将这些规则自动化的工具。
代码格式关乎沟通,而沟通是专业开发者的头等大事。
或许你认为“让代码能工作”才是专业开发者的第一优先级。你今天编写的功能,极有可能在下一版本中被修改,但代码的可读性却会对以后可能发生的修改行为产生深远影响。原始代码修改之后很久,其代码风格和可读性仍会影响到可维护性和扩展性。即便代码已不复存在,你的风格和律条仍存活下来。
向报纸学习
看看写得很好的报纸。从上到下阅读,在顶部,有头条,告诉你故事主题。然后第一段是大纲,接着细节渐次增加。
源代码应当一样,名称简单且一目了然。源文件最顶部应该给出高层次概念和算法。细节应该往下渐次展开,直到最底层的函数和细节。
报纸有许多篇文章,多数短小精悍。假若一份报纸只登一篇长篇故事,没人会去读它。
概念间垂直方向上的区隔
每 一组代码行展示一条完整的思路,这些思路需要用空白行区隔开来。(国画中的留白!)
每一行都可以标识出新的独立概念,下面就是一个好个示例:
package fitnesse.wikitext.widgets;
import java.util.regex.*;
public class BoldWidget extends ParentWidget{
public static final String REGEXP = “’’’.+?’’’”;
private static final Pattern pattern = Pattern.compile(“’’’’(.+?)’’’”,
Pattern.MULTILINE + Pattern.DOTALL);
Public BoldWidget(…) throws Exception {
…
}
}
垂直方向上的靠近
正因为空白行隔开了概念,靠近的代码行则暗示了它们之间的紧密关系。这有助于对代码的理解。
垂直距离
关系密切的概念应该互相靠近。应避免迫使读者在源文件和类中跳来跳去。
变量声明尽可能靠近其使用位置。相关的函数也应遵循从上及下的思路来排列。
垂直顺序
被调用的函数应该放在执行调用的函数下面,建立一种自顶向下贯穿的良好信息流。
像读文章一样,最重要的概念先出来,最底层的细节最后出来。自最前面的几个函数获知要旨,而不至于迷失于细节中。
水平方向的区隔与靠近
空格字符可以把相关性较弱的事物分隔开。如:
int lineSize = line.length();
lineWidthHistogram.addLine(lineSize, lineCount);
缩进
程序员相当依赖缩进模式来看清楚自己在什么范围工作,这样可以快速跳过与当前关注的情形无关的范围。
团队规则
在团队中,规则由团队说了算。好的软件系统是由一系列读起来不错的代码文件组成的,它们需要一致和顺畅的风格。不同的风格,会增加代码阅读和维护的复杂度。