第五章 格式
5.1 格式的目的
- 代码格式关乎沟通,而沟通是开发者的头等大事;
- 代码的实现可能被修改,而代码格式会一直被继承下去;
5.2 垂直格式
5.2.1 向报纸学习
- 在文件开始有一个大纲,隐藏细节;
- 下文逐渐增加细节;
5.2.2 概念间垂直方向上的区隔
- 代码从左往右,从上到下阅读;
- 每一行代码表示一个子句,每段表示一个完整思路;
- 每一概念间用一个空行隔开
5.2.3 垂直方向上的靠近
- 空行隔开了概念,靠近表示其间的相关性;
- 概念上相关的代码应该相互靠近;
5.2.4 垂直距离
- 关系密切的概念应该相互靠近
- 变量的声明应该靠近其使用位置,因为函数短小,本地变量应该在函数的顶部;对于较长的函数应该在顶部声明;
- 循环中的控制变量应该在循环语句中声明;
- 实体变量应该在类的顶部声明;因为该变量应该被类的大多数方法使用,不会造成距离上的问题;
- 相关函数应该被放置在一起;比如一个函数调用另一个函数,则被调用函数应该放在调用函数的下方,符合从上向下的于都顺序;
- 概念相关的代码应该放在一起;相关性越强,应该越靠近;例如一组具有相似操作的函数,而非基于调用的相关性;
5.2.5 垂直顺序
- 源文件中自上向下展示函数调用的顺序,这样可以在文件的开始的几个函数得知设计要旨,而非沉溺于细节中;
5.3 横向格式
- 一行代码的上限是120个字符,遵守无需滚动滚动条的原则;
5.3.1 水平方向上的区隔与靠近
- 使用空格将相关的关联到一起,也使用空格将相关性较弱的分隔开来;
int a = b.c(d + e*f, g);//在'='周围添加空格表示强调;在圆括号周围未添加空格,表示相关性;在'+'添加空格表示优先级低于'*';
5.3.2 水平对其
- 水平对齐即数据类型和变量名称上下对齐,这会造成注意力的分散;会造成从上向下阅读变量名称,而忽略了变量类型;
5.3.3 缩进
- 源代码是一种有层次的组织,从上到下分别为文件、类、方法、代码块;每一层级中可以进行定义和解释;
- 每一层级(从类开始)相对于上一层级缩进,以区分层次;
- 对于十分短小的函数,也不要违反规则;
5.3.4 空范围
- 当while、for语句为空时,添加大括号;
5.4 团队规则
- 一切以团队制定的规则为最基本的前提;