5.1 格式的目的
先明确一点,代码格式很重要。代码格式不可忽略,必须严肃对待。代码格式关乎沟通。
5.2 垂直格式
5.2.1 向报纸学习
源文件也要像报纸文章那样。名称应当简单且一目了然。名称本身应该足以告诉我们是否在正确的模块中。源文件最顶部应该给出最高层次的概念和算法。细节应该往下渐次展开,直至找到源文件中最底层的函数和细节。
5.2.2 概念间垂直方向上的区隔
每行展示一个表达式或一个子句,每组代码行展示一条完整的思路。这些思路用空白行区隔开来。
5.2.3 垂直方向上的靠近
如果说空白行隔开了概念,靠近的代码行则暗示了它们之间的紧密关系。紧密相关的代码应该互相靠近。
5.2.4 垂直距离
变量声明。变量声明应尽可能靠近其使用位置。
实体变量。实体变量应该在类的顶部声明。
相关函数。若某个函数调用了另外一个,就应该把它们放在一起,而且调用者应该尽可能放在被调用者上面。
概念相关。概念相关的代码应该放在一起。代码的相关性越强,彼此之间的距离就该越短。
5.2.5 垂直顺序
一般而言,我们想自上而下展示函数调用顺序。被调用的函数应该放在执行调用的函数下面。
5.3 横向格式
应该尽力保持代码行短小。
5.3.1 水平方向上的区隔与靠近
我们使用空格字符将彼此紧密相关的事物连接在一起,也用空格字符把相关性较弱的事物区隔开。
赋值操作符周围加上空格字符,以达到强调的目的。
空格字符的另一种用法是强调其前面的运算符。
5.3.2 水平对齐
这种对齐方式没什么用。
5.3.3 缩进
源文件是一种继承结构,要让这种范围式继承结构可见,我们依源代码行在继承结构中的位置对源代码行做缩进处理。
违反缩进规则。有时会忍不住想要在短小的if语句、while循环或小函数中违反缩进规则,多数时间还是会回过头去加上缩进。
5.3.4 空范围
如果无法避免使用while或for语句的语句体为空的结构,就确保空范围体的缩进,并用括号包围起来。
5.4 团队规则
一组开发者应当认同一种格式风格,每个成员都应该采用大家都认同的那种风格。