Clean Code系列之坏味道及重构

简介: 几乎在每个团队,都至少有一份代码规范,或者代码的check list。然也就仅仅是一份清单。每次团队复盘时,都会有一条,我们要写好代码,然“好代码”是什么样子,什么标准,全取决于各人的水平。每个程序员也都知道code review的重要性,然排期很紧张,难得做一次。宁可花时间追查问题,也不做防御性准备。

几乎在每个团队,都至少有一份代码规范,或者代码的check list。然也就仅仅是一份清单。

每次团队复盘时,都会有一条,我们要写好代码,然“好代码”是什么样子,什么标准,全取决于各人的水平。

每个程序员也都知道code review的重要性,然排期很紧张,难得做一次。宁可花时间追查问题,也不做防御性准备。

这些现象,是不是特别平常,虽然很想改变,但又是无力感呢。

程序员对代码的追求态度决定了职业生涯的高度,代码的质量决定了生活质量。

为什么会有上面提到的现象,大概有这两方面的原因:

1、每个人对“好代码”的观念不一样

2、对于“坏味道”缺乏明确的表象判断,也就很难提出明确的改进措施

好代码

什么样的才是好代码,耳朵听出老茧的那句话“高内聚,低耦合”,可是这句话,太抽象了,类似之前总结的SOLID原则[1],需要更具体的特征。这也类似于要先把书读厚的原因。

怎么培养对代码的审美高度?

首先需要大量阅读好代码,可以去阅读很多开源项目。

其次找个导师,让自己的代码多被审视。

坏味道

如果说好是没有标准的,那坏是有限的。

对象健身操

这是Thoughtworks文集中,有一套对象健身操。保持9条规则。

1、 方法只使用一级缩进

2、 拒绝使用else关键字

3、 封装所有原生类型和字符串

4、 一行代码只有一个“.”运算符

5、 不要使用缩写

6、 保持实体对象简单清晰

7、 任何类中的实例变量都不要超过两个

8、 使用一流的集合

9、 不要使用任何Getter/Setter/Property

重构

经典书籍《重构》、《Clean Code》都是让代码质量提升的优秀教材。它们都是工具书,时时拿出来对照书本检查代码。

在《重构》中,明确列出了多项“坏味道”,并给出了重构方法:

1、 Duplicated Code(重复的代码)

2、 Long Method(过长函数)

3、 Large Class(过大类)

4、 Long Parameter List(过长参数列)

5、 Divergent Change(发散式变化)

6、 Shotgun Surgery(霰弹式修改)

7、 Feature Envy(依恋情绪)

8、 Data Clumps(数据泥团)

9、 Primitive Obsession(基本型别偏执)

10、 Switch Statements(switch惊悚现身)

11、 Parallel Inheritance(平行继承体系)

12、 Lazy Class(冗赘类)

13、 Speculative Generality(夸夸其谈未来性)

14、 Temporary Field(令人迷惑的暂时值域)

15、 Message Chains(过度耦合的消息链)

16、 Middle Man(中间转手人)

17、 Inappropriate Intimacy(狎昵关系)

18、 Alternative Classes with Different Interfaces(异曲同工的类)

19、 Incomplete Library Class(不完整的程序库类)

20、 Data Class(单纯的数据类)

21、 Refused Bequest(被拒绝的遗赠)

22、 Comments(过多的注释)

当然,实际工作中,不能消除所有坏味道,但只要能做到命名合理、没有重复、各个代码单元(类、函数)体量适当、各个代码单元有明确且单一的职责、各个代码单元之间有恰当的交互,就已经是质量相当高的代码了。

我会按上面的内容结合实际工作,出一份Clean Code系列[2],早日让代码摆脱坏味道。

References

[1] SOLID原则: https://www.zhuxingsheng.com/tags/SOLID/

[2] Clean Code系列: https://www.zhuxingsheng.com/tags/Clean-Code/


目录
相关文章
|
JavaScript 前端开发 安全
15个最佳的代码评审(Code Review)工具
  代码评审可以被看作是计算机源代码的测试,它的目的是查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能。代码审查程序以各种形式,如结对编程,代码抽查等。在这个列表中,我们编制了15个最好的代码审查工具,这将有助于开发者节省代码审查时间。
4585 0
|
1天前
|
算法
如何做代码Review?
如何做代码Review?
8 2
|
5月前
|
算法 程序员 编译器
美丽的代码:规范go应用代码注释
【6月更文挑战第30天】本文介绍注释应与代码同步,避免误导,且关键点解释。使用LLVM构建编译器示例展示Go语言规范。注释虽有局限,但在解释复杂逻辑、业务规则时仍有其价值。程序员需平衡注释与代码的关系,创造更优的代码。
1069 0
美丽的代码:规范go应用代码注释
|
5月前
|
算法
Clean Code 代码整洁之道 格式
Clean Code 代码整洁之道 格式
|
5月前
代码整洁之道 clean code 读书笔记
代码整洁之道 clean code 读书笔记
|
6月前
|
Java 测试技术 p3c
我们如何做Code Review
我们如何做Code Review
127 0
|
算法 程序员
《Clean Code》读书笔记
《Clean Code》读书笔记
102 0
|
监控 算法 程序员
大厂怎么做Code Review?
发现坏味道的实践,就是Code Review:对计算机源代码系统化地审查,常用软件同行评审的方式进行,其目的是在找出及修正在软件开发初期未发现的错误,提升软件质量及开发者的技术
302 0
|
Web App开发 JSON 前端开发
用了这 7 个 VS Code 插件,想写一辈子代码
你知道将高级开发人员与普通开发人员区分的条件是什么吗?没错,是所使用的工具,俗话说,"工欲善其事必先利其器", 拥有正确的工作工具可以让开发人员的生活变得更加轻松,甚至想写一辈子代码。
用了这 7 个 VS Code 插件,想写一辈子代码