《代码整洁之道》第5章:格式——学习笔记

格式的目的

  • 代码格式很重要,不可忽略,必须严肃对待。
  • 代码格式关乎沟通,而沟通是专业开发者的头等大事。

垂直格式

《代码整洁之道》第5章:格式——学习笔记

  • 有可能用大多数为200行、最长500行的单个文件构造出色的系统。

向报纸学习

  • 源文件也要像报纸文章那样。名称应该简单且一目了然。名称本身应该足够告诉我们是否在正确的模块中。
  • 源文件最顶部应该给出高层次概念和算法。细节应该往下渐次展开,直到找到源文件中的最底层的函数和细节。

概念间垂直方向上的区隔

  • 几乎所有的代码都是从上往下都,从左往右读。
  • 每行展现一个表达式或一个子句,每组代码行展示一条完整的思路。
  • 这些思路用空白行区隔开来。

垂直方向上的靠近

  • 如果说空白行隔开了概念,靠近的代码行则暗示了他们之间的紧密关系。

垂直距离

  • 关系密切的概念应该互相靠近。
  • 除非有很好的理由,否则就不要把关系密切的概念放到不同的文件中。
  • 应避免读者在源文件和类中跳来跳去。
  • 变量声明,应尽可能靠近其使用位置。
  • 如果函数很短,本地变量应该在函数的顶部出现。
  • 循环变量中的控制变量应该总是在循环语句中声明。
  • 偶尔,在较长的函数中,变量也可能在某个代码块顶部,或在循环之前声明。
  • 实体变量应该在类的顶部声明。(C++ -> 底部,Java ->顶部),没有理由去遵循其他惯例。
  • 重点是在谁都知道的地方声明实体变量。
  • 相关函数。若某个函数调用了另一个,就应该把他们放到一起,而且调用者应该尽可能放在被调用者上面。
  • 概念相关。概念相关的代码应该放到一起。相关性越强,彼此之间的距离就该越短。

垂直顺序

  • 一般而言,我们想自上而下展示函数调用依赖顺序。
  • 也就是说,被调用的函数应该放在执行调用的函数下面。
  • 这样就建立了一种自顶向下贯穿源代码模块的良好信息流。

横向格式

《代码整洁之道》第5章:格式——学习笔记

  • 应该尽力保持代码短小。死守80个字符的上限有点僵化,而且我也并不反对代码行长度达到100个字符或120个字符。再多的话,大概就是肆意妄为了。
  • 我一向遵循无需拖动滚动条到右边的原则。
  • 上限是120个字符!!

水平方向上的区隔与靠近

  • 我们使用空格字符将彼此紧密相关的事物连接到一起,也用空格字符把相关性较弱的事物分开。
  • 在赋值操作符周围加上空格字符,以达到强调目的。
  • 不在函数名和左括号之间加空格。这是因为函数与其参数密切相关。
  • 把函数调用括号中的参数一一隔开,强调逗号,表示参数是互相分离的。
  • 乘法因子之间没加孔哥,以为他们具有较搞优先级。加减法运算项之间用空格隔开,以为加法和减法优先级较低。

水平对齐

  • 尽力对其一组声明中的变量名,或一组赋值语句中的右值。
    《代码整洁之道》第5章:格式——学习笔记
  • 我发现这种对齐没什么用。对齐,像是在强调不重要的东西,把我都目光从真正的意义上拉开。
  • 所以,我最终放弃了这种做法。
    《代码整洁之道》第5章:格式——学习笔记

缩进

  • 源文件是一种继承结构,而不是一种大纲结构。
  • 类中的方法相对该类应该缩进一个层级。
  • 方法的实现相对方法声明缩进一个层级。
  • 代码块的实现相对于容器代码块缩进一个层级,以此类推。

空范围

  • 有时,while 或 for 语句的语句体为空。

团队规则

  • 每个程序员都有自己喜欢的格式规则,但如果在一个团队中工作,就是团队说了算。
  • 好的软件系统是由一系列读起来不错的代码文件组成的。

鲍勃大叔的格式规则

  • 这段代码可以看作是如何把代码写得最好的编码标准文档的范例
    《代码整洁之道》第5章:格式——学习笔记
    《代码整洁之道》第5章:格式——学习笔记