《代码整洁之道》第5章:格式——学习笔记
分类:
文章
•
2024-01-16 08:38:34
格式的目的
- 代码格式很重要,不可忽略,必须严肃对待。
- 代码格式关乎沟通,而沟通是专业开发者的头等大事。
垂直格式
- 有可能用大多数为200行、最长500行的单个文件构造出色的系统。
向报纸学习
- 源文件也要像报纸文章那样。名称应该简单且一目了然。名称本身应该足够告诉我们是否在正确的模块中。
- 源文件最顶部应该给出高层次概念和算法。细节应该往下渐次展开,直到找到源文件中的最底层的函数和细节。
概念间垂直方向上的区隔
- 几乎所有的代码都是从上往下都,从左往右读。
- 每行展现一个表达式或一个子句,每组代码行展示一条完整的思路。
- 这些思路用空白行区隔开来。
垂直方向上的靠近
- 如果说空白行隔开了概念,靠近的代码行则暗示了他们之间的紧密关系。
垂直距离
- 关系密切的概念应该互相靠近。
- 除非有很好的理由,否则就不要把关系密切的概念放到不同的文件中。
- 应避免读者在源文件和类中跳来跳去。
- 变量声明,应尽可能靠近其使用位置。
- 如果函数很短,本地变量应该在函数的顶部出现。
- 循环变量中的控制变量应该总是在循环语句中声明。
- 偶尔,在较长的函数中,变量也可能在某个代码块顶部,或在循环之前声明。
- 实体变量应该在类的顶部声明。(C++ -> 底部,Java ->顶部),没有理由去遵循其他惯例。
- 重点是在谁都知道的地方声明实体变量。
- 相关函数。若某个函数调用了另一个,就应该把他们放到一起,而且调用者应该尽可能放在被调用者上面。
- 概念相关。概念相关的代码应该放到一起。相关性越强,彼此之间的距离就该越短。
垂直顺序
- 一般而言,我们想自上而下展示函数调用依赖顺序。
- 也就是说,被调用的函数应该放在执行调用的函数下面。
- 这样就建立了一种自顶向下贯穿源代码模块的良好信息流。
横向格式
- 应该尽力保持代码短小。死守80个字符的上限有点僵化,而且我也并不反对代码行长度达到100个字符或120个字符。再多的话,大概就是肆意妄为了。
- 我一向遵循无需拖动滚动条到右边的原则。
- 上限是120个字符!!
水平方向上的区隔与靠近
- 我们使用空格字符将彼此紧密相关的事物连接到一起,也用空格字符把相关性较弱的事物分开。
- 在赋值操作符周围加上空格字符,以达到强调目的。
- 不在函数名和左括号之间加空格。这是因为函数与其参数密切相关。
- 把函数调用括号中的参数一一隔开,强调逗号,表示参数是互相分离的。
- 乘法因子之间没加孔哥,以为他们具有较搞优先级。加减法运算项之间用空格隔开,以为加法和减法优先级较低。
水平对齐
- 尽力对其一组声明中的变量名,或一组赋值语句中的右值。
- 我发现这种对齐没什么用。对齐,像是在强调不重要的东西,把我都目光从真正的意义上拉开。
- 所以,我最终放弃了这种做法。
缩进
- 源文件是一种继承结构,而不是一种大纲结构。
- 类中的方法相对该类应该缩进一个层级。
- 方法的实现相对方法声明缩进一个层级。
- 代码块的实现相对于容器代码块缩进一个层级,以此类推。
空范围
团队规则
- 每个程序员都有自己喜欢的格式规则,但如果在一个团队中工作,就是团队说了算。
- 好的软件系统是由一系列读起来不错的代码文件组成的。
鲍勃大叔的格式规则
- 这段代码可以看作是如何把代码写得最好的编码标准文档的范例