格式目的
- 关乎沟通 沟通是专业开发者的头等大事
- 可读性
- 代码风格和律条的深远影响
- 影响到可维护性 扩展性
垂直格式
向报纸学习
- 顶部有头条 —— 源文件名应该一目了然 足够告诉我们是否在正确的模块中
- 第一段是大纲 给出粗线条概述 但隐藏了细节 —— 源文件最顶部应该给出高层次的概念和算法
- 接着读下去 细节渐次增加 —— 源文件后面是越来越底层的函数和细节
- 多数短小精悍 —— 要拆分函数 每个函数只做一件事
垂直区隔
每组(几行)代码行展示一条完整的思路 这些思路用空白行区隔开来
封包 —— 空行 —— 导入声明 —— 空行 —— 每个函数间(空行)
每个空白行都是一条线索 标识出新的独立概念 往下读代码时 目光总会停留于空白行之后那一行
垂直靠近
去掉注释
垂直距离
关系密切的概念应互相靠近 不要放到不同文件上 避免使用 protected 避免迫使读者在源文件和类中跳来跳去
变量声明应尽可能靠近其使用的位置
实体变量应在类顶部声明 被该类所有方法或大多数方法所用
相关函数 调用者在被调用者上面 自顶向下递归顺次出现
概念相关 放一起 e.g. 重载方法
垂直顺序
自上而下展示函数调用依赖顺序 建立自顶向下贯穿源代码模块的良好信息流
水平格式
应尽力保持代码短小 无需拖动滚动条到右边的原则 上限120字符
水平区隔与靠近
不在函数名和左圆括号之间加空格 因为函数与其参数密切相关 如果隔开 就会显得互无关系
高优先级运算符之间不加空格
缩进
保持缩进 避免坍塌
团队规则
每个程序员都有自己喜欢的格式规则 但如果在一个团队中工作 就是团队说了算