格式
选用一套管理代码格式的简单规则,并应用,能大幅度提高代码的可维护性
垂直方向上的格式
排版
关注整个源文件中代码的排版是很重要的,参考报纸的写法: 当我们从上到下阅读报纸时,头部有个大标题: 告诉我们故事主题,第一段是整个故事的大纲,给出粗略的主题内容,但是隐藏了细节,接着读下去细节渐次增加,直至我们完全了解所有内容,
源文件亦是如此: 首先文件名应该简单且一目了然,其次源文件中由上至下应该是: 由抽象层级较高的函数和他们之间的调用组成主要的逻辑线,然后是下一抽象层级的函数,其中的细节应该往下逐渐展开,直至找到源文件中最底层的函数和细节
适当的隔离
导入导出,变量声明,函数之间等都用空行隔开,这条空行会暗示读者空行隔开的是不同的概念
适当的紧凑
空行隔开各个概念,而相邻的代码则暗示了他们之间的紧密联系,所以紧密相关的代码应该相互靠近在一起.
垂直距离
对于哪些关系密切,放置在同一源文件中的概念,他们在书写的位置距离应该成为对彼此易懂度影响有多重要的标准,避免读者在源文件中跳来跳去.换句话说关系密切的概念之间的距离应该尽量小,
如何控制概念之间的垂直距离?下面是一些建议:
变量声明: 变量声明应该尽可能的靠近其使用的位置
实体变量: 实体变量应该在类的顶部声明
相关函数: 若某个函数调用了另外一个,就应该把他们放在一起,且调用者应该在被调用者的上面
概念相关: 上述讲的相关性都是建立在直接依赖的基础上,编写代码时也会出现其他的相关性: 操作相似的函数等这时,函数之间即使没有调用关系也应该放在你一起
垂直顺序
通常我们希望建立一种自顶向下贯穿源代码模块的信息流,自上向下展示函数调用顺序,使最重要的概念先出现,并且尽可能少的包含细节,最底层的细节最后出现
就如排版一节中说的: 由抽象层级高的函数组成逻辑线(信息流),这样我们就能扫一眼源代码文件,自最前面的几个函数获取主要信息,而不被细节所消耗精力
横向方向上的格式
一行代码应该多宽?
最好遵循无需拖动滚动条就能看到最右侧代码的原则,不要让一行代码超出了你的屏幕
适当的隔离/紧凑
虽然现在的编辑器会自动格式化代码,但Bob大叔的空格用法很妙:
使用空格来强调区隔关系: 如操作符两边,函数参数之间,
不使用空格来表示关系密切: 如函数名和圆括号.同时也可以用来强调优先级:
下面是一些伪代码例子:
const a = 1; //等号两边使用空格,强调两个要素: 左边和右边
function fn(a, b, c){} //函数名和后面的括号不加空格,用来强调这是一体的,而参数中使用空格强调每个参数都是独立的
b*b - 4*a //乘法优先级较高,所以乘号两边不使用空格间隔
缩进
使用缩进来代表层级和范围
团队风格
每个程序员都有自己喜欢的格式,但在团队中工作,就是团队说的算,和团队成员一起指定规则并遵守,记住,好的软件系统是一系列拥有一致风格的代码文件组成,不是一个或几个文件.让读者确信,他在一个源文件中看到的代码风格在其他文件也是适用的.