编写可读代码的艺术

699 阅读2分钟

1.代码应当易于理解

  • 好代码的标准
1.代码的写法应当使别人理解它所需的时间最小化
2.精简你的代码

2.把信息装到名字里

  • 选择专业的名词

    eg: get/fetch

  • 避免泛泛的名词

    eg: foo/tmp

  • 具体代替抽象

  • 使用前/后缀给名字附带信息

    eg: start_ms

  • 决定名字的长度

    1.作用域大的用具体一点的名字

    2.小作用域可以用短名字

  • 利用名字的格式来表达含义

3.不会误解的名字

核心思想: 这个名字会被别人解读成其他含义吗
1.当要定义一个值的上下限制的时候可以用,max/min, start/stop, beigin/end之类的词
2.定义布尔值可以使用is/has这类词

4.审美

  • 使用一致的布局,让读者很快就能习惯这种风格
  • 让相似的代码看上去相似
  • 把相关的代码行分组形成代码块
  • 一致的代码分格比“正确”的代码风格更重要

5.该写什么样的注释

核心思想:不要为那些从代码本身就能快速推断的事实写注释,一个好的名字比备注更主要。
  • 什么不需要注释
1.能从代码本身快速推断的事实
2.用来粉饰烂代码(例如蹩脚的名字)=>应该把代码改好
  • 你应该记录下来的想法
1.对于为什么代码写成这样的理由
2.代码中的缺陷
3.常量
4.预料到哪些部分会让读者迷惑
5.用注释来总结代码块

6.写出言简意赅的注释

1.让注释保持紧凑
2.避免使用不明确的代词
3.简单的描述函数的行为例如传参/**Function(/**arg*.../)*/
4.申明代码高层次的含义而非细节

7.把控制流变得易读

1.在写一个比较时,把改变的值写在左边,把稳定的值写在右边
2.用正向思维来处理问题
3.尽量少用三木运算符,do/while,goto这类会导致代码可读性变差的方法
4.避免深嵌套

8.拆分超长的表达式

关键思想:把超长的表达式拆分成更容易理解的小块

9.变量与可读性

  • 减少变量
  • 减小每个变量的作用域
  • 只写一次的变量更好

10.抽取不相关的句子

特定的代码干特定的事情,尽量不要让与业务无关的代码占大量的篇幅,可以提出工具函数,简化接口代码等

11.少写代码

1.质疑和拆分你的需求呢

2.保持小的代码库,创建越多越好的工具来较少重复代码

3.熟悉周边好用的工具库