Clean Code - 格式
格式的目的
首先声明代码格式非常重要,因为它关乎沟通,而沟通是专业开发者的头等大事。你今天编写的功能,极有可能在下一个版本中被修改,而对于修改而言,代码的可读性会对修改过程有着深远的影响。
源代码文件该多大?
书中作者列出了采用 Java 编写的诸多开源库代码的行数比较。最终得出了一个结论,有可能用大多数为 200 行、最长 500 行的单个文件构造出色的系统(例如 FitNesse,其总长约五万行)。当然这不是硬原则,但是你应该乐于接受,短文件通常比长文件易于理解。
报纸启示
报纸有标题有头条,文章的第一段是故事大纲……从大概念到具体内容细节渐增。整个系统的源文件也应当学习,源文件最顶部应该给出高层次概念和算法,细节应该往下渐次展开(记得编写函数的建议中抽象层次的概念吗?对,异曲同工之妙)
垂直:避免跳来跳去的方法!
-
什么是跳来跳去?
你是否曾经在某个类中摸索,从一个函数跳到另一个函数,上下求索,想要弄清楚这些函数如何操作、如何互相相关,最后却被搞糊涂了?你是否曾经苦苦追索某个变量或函数的继承链条?做这些事情是因为你想要理解系统做什么,但却花时间和精力在找到和记住那些代码碎片在哪里,并且做关联。(原作者这句话实在是真到不能再真)
上述这种让读者肉眼物理上的跳来跳去会带动思维的跳来跳去,带来的后果就是可读性差!以下是一些比较好的格式建议来避免这个问题
-
概念间垂直方向上的区隔
在代码中有意识的用空白行做抽象概念和抽象功能的区分,每一个有规律的空行都能给增加可读性带来帮助。
-
垂直方向上靠近
空白隔开了概念,靠近的代码则暗示了它们之间的关系。例如成对的 API,删除和增加
-
另外
垂直方向上的靠近显然不能用在分布在不同文件中的概念。因此 除非有很好的理由,否则就不要把关系密切的概念放到不同的文件中,事实上也是避免使用 protected 变量的理由之一。
-
声明变量、函数的位置
- 变量的声明尽可能靠近其使用位置
- 本地变量应该在函数顶部出现
- 循环中的控制变量应该总在循环语句中声明
- 实体变量应该在类的顶部声明,别在代码中间去声明
- 同一文件中,相关函数(例如调用关系)应该放到一起,让它们靠近。调用者放在被调用者上面,程序就会有一个自然的顺序
横向
-
区隔与靠近
- 操作符周围加上空格字符
- 水平对齐没必要
-
严格遵守缩进规则
这样便于快速浏览代码,并且帮助读者过滤掉很多没必要的检查的代码块。单行的 if 或者 while 等语句最好不要写,也写成缩进形式
-
团队协作需要商量好一致的格式
后记
在我刚工作的时候,就曾被我导师review代码后抓出来很多格式问题,当时我印象最深的就是他问我 “为什么这里没空格?”,我还很糊涂的马上回复 ”没报错呀?为什么要空格……“ 后面就是被一顿教训了

浙公网安备 33010602011771号