编写可读代码的艺术

写让人理解的代码

代码的写法应该使理解代码的人所需要的时间最小化

变量名

  1. 使用专业的词
  2. 避免使用空泛的词
  3. 给变量名带上附加信息
  4. 为作用域更大的变量起一个长的名字
  5. 有目的的使用大小写和下划线

让人不会误解的名字

不会误解的名字是最好的名字------------阅读代码的人应该理解你的本意,并且不会有其他的理解

  • 表示上下限:max min
  • 表示包含的范围:first last
  • 表示包含、排除某个范围:begin end

命名一个bool类型的值,应该使用 is 、has这样的词来明确它所表达的含义。避免使用反义词,比如disable。

要小心用户对特定词的期望,例如用户会认为get或者size 是一个轻量的方法。

写代码也需要审美

  1. 如果多个代码块做同样的事,尝试让他们有同样的剪影
  2. 把代码块按照 列 对齐可以让代码更容易阅读
  3. 如果一段代码中用到了A,B,C,那么在使用它们的下方就应该保持顺序一致性
  4. 使用空行将大段的代码分成逻辑上的"段落"

该写什么样的注释?

注释的目的是帮助读代码的人了解作者在写代码时的思想。

什么地方不需要注释

  • 能从代码本身中快速推断的事实
  • 用来装饰垃圾点(比如拗口的方法名),实际上应该把名称修改好

记录你的想法

  • 为什么代码写成这样而不是另一个样子的内在理由("指导性批注")
  • 代码中的不足,使用像TODO或者XXX这样的标记
  • 常量背后的意义,为什么是这个值?

在读者的立场思考

  • 预料到代码中哪些部分会让读者说:"哎嘿?什么鬼"给它们加上注释
  • 为小白意料之外的行为加注释
  • 在文件、类级别上使用"全局观"注释来解释所有部分是如何一起工作的
  • 用注释总结代码块, 让读者不会迷茫在细节里

如何写注释

  1. 不管你心里在想什么,先把它记录下来
  2. 读一下这段注释,看看它有什么需要改进的
  3. 不断改进

写言简意赅的注释

  • 当像"这里"和"it"这样的代词可能指代多个事物时,避免使用它们
  • 尽量精确的描述方法行为
  • 在注释中用精心挑选的输入/输出例子进行说明
  • 声明代码的高层次意图,而非明显的细节
  • 用含义丰富的词来使注释更加简洁

简化流程让代码容易阅读

  1. 写一个比较时,把改变的值放在左边,把确定的值放在右边
  2. 可以重新排列if else 代码块,优先处理正确的,简单的逻辑。有时这些准则会冲突,当不冲突时,遵循这些经验法则
  3. 像三目运算符,do while循环经常会导致代码可读性变差,最好不要使用它们,因为总是有更整洁的方式
  4. 嵌套的代码块需要花一些时间去理解,每层新的嵌套都会给读者"思维栈"push一条数据,应该让它们变得"线性",来避免深层嵌套
  5. 提早返回可以让代码更整洁

拆分又臭又长的表达式

引入"解释变量"代替较长的子表达式,有三个好处

  1. 它把巨大的表达式拆分成一个小段
  2. 通过简单的名字来描述一个子表达式,让代码文档化
  3. 它帮助读者识别代码中重要的概念
    用德摩根定理来操作逻辑表达式

变量与可读性

  1. 减少变量,通过立刻处理结果来消除中介变量
  2. 减少变量作用域,作用域越小越好
  3. 变量只写一次最好,只设置一次的变量会让代码变得更加容易理解

抽取无关的代码

一次只做一件事

把想法变成代码

少写代码

参考

  1. https://www.bilibili.com/video/BV1qs411L7tH/?p=4
相关推荐
古拉拉明亮之神2 天前
scala的统计词频
scala·命令模式·代码规范·源代码管理
沉默是金~3 天前
Vue 前端代码规范
前端·vue.js·代码规范
CreditFE信用前端5 天前
如何更好的应对技术债?
程序员·架构·代码规范
litGrey7 天前
【规范七】Git管理规范
git·代码规范
三原7 天前
写给我前端同事,从事一年多应该要怎么成长的路线
前端·代码规范
方圆想当图灵7 天前
由 Mybatis 源码畅谈软件设计(三):简单查询 SQL 执行流程
后端·代码规范
看山还是山,看水还是。8 天前
软件工程 设计的复杂性
笔记·流程图·软件工程·团队开发·代码规范·内容运营·代码覆盖率
古拉拉明亮之神9 天前
Scala的链式风格
scala·命令模式·代码规范·源代码管理
狂炫一碗大米饭10 天前
响应式设计:打造一个自动适应用户设备屏幕大小和方向的页面。
前端·javascript·代码规范
程序猿进阶10 天前
Dead Code Clean
java·spring boot·后端·kafka·代码规范·质量管理·代码清理