【每日一学 20261012】《程序员生存手册》——编码后:代码重构要做好
- 2026-10-12 15:24:00
- 蓉蓉 原创
- 16
1.重构的概念:何为重构,为何重构
首先,编码应该具备足够的可读性,程序员在编写代码的过程中需要注意的核心问题是如何提高代码的可读性,避免代码染上“坏味道”。其次,软件开发需要提升代码的稳定性。很多时候,在编写代码的过程中,不仅要着眼软件的表层功能,还要想得更多、看得更远、站得更高。例如在开发一个表单功能时,如果能够完整输入数据、查询信息,我们就默认这项工作结束了。但这会让我们忽略更重要的:我们编写的整套代码应该做好各种边界检查和参考完整性检查,提前做好各种异常输入的捕获操作,以保证在执行任何不合规操作的情况下,整个应用程序都不会崩溃或发生其他严重问题。
再次,需要提升程序本身的可维护性。当一个程序编写完成并部署上线后,在运行状态下是很难实时进行代码调试(debug)的。这就需要我们在完成代码功能编写的基础上,增加日志和关键的调试信息,以便在程序运行时实时调取。
最后,除了在日常工作中注意代码质量,我们还可以通过代码重构来对代码进行改进和质量提升。代码重构需要重新考量如何提升整个程序的可读性、稳定性,以及可复用性。例如,在原有程序代码中,有哪些公用的方法和函数可以提取出来,有哪些部分可以从代码中抽象出一个独立的、可复用的类,以此来提升代码的可复用性等。
2.代码异味:精准识别坏代码
(1)代码竟会有“气味”
食物在腐烂之际会散发出异味,提醒人们食物已经坏掉了,需要处理。同样,如果代码中某处出现了问题,也会有一些症状,这些症状称为“代码异味”。
“代码异味”一词是由肯特·贝克(Kent Beck)在帮助马丁·福勒(Martin Fowler)编写《重构:改善既有代码的设计》一书时创造的。福勒对代码异味的定义是:“代码异味是在计算机编程领域,设计所用结构违背了基本设计原则并对设计质量有负面影响的一种表象。”
我们可以将代码异味理解为由于设计缺陷或不良编码习惯而引入程序的代码症状,这类症状可能引发程序深层次的质量隐患。与食物腐败散发出的味道不同的是,代码异味是一种“暗示”,暗示我们代码可能有问题,而非确定性的。它的出现是提示程序员需要对项目设计进行深入查看。
(2)代码异味的影响
如果出现了代码异味,我们也无须过度紧张。因为在整个程序中,代码异味是随时都会出现的。即便代码出现了异味,也并不代表这段代码就有缺陷或无用了。一般情况下,有异味的代码也依旧可以运行,只是如果不加以重视,没有进行适当的维护或改进,代码质量可能会逐渐下降,变得难以维护、扩展,从而增加技术债务。所以有代码异味并不一定意味着软件不能工作,它仍然会正常输出,不过可能处理速度会减慢,且伴随着更高的失败和错误风险。而对高质量的代码来说,上述问题都是可以减少甚至避免的。(3)如何给代码“除臭”
重构,一言以蔽之,就是在不改变软件可观察行为的前提下,有条不紊地改善代码,它是实现敏捷开发的重要技术因素之一。大家也可以把重构理解为根据已识别出的异味,将代码提炼和精简的过程,能够提高代码质量,使其变得更健壮。重构后,可以运行单元测试,确保一切正常。如此循环,直到大部分异味消失。
3.重构基本策略:有计划、有组织
(1)重构基本原则
- 重构前需要观察和记录现有代码的外在行为。
- 如果发现二者行为不一致,则重新审视或撤销更改,回到第1步。
- 重构后记录、比较改动后的代码的外在行为。
- 如果行为一致,则进行下一轮重构。
(2)重构小策略
- 在重构之前,保证代码具备管理功能。
- 保持较小的重构步伐。
- 同一时间只处理一项重构。
- 在重构时把要做的事情一条条列出来。
- 把在重构时所想到的任何有用信息记录到笔记中。
- 重构后要运行自动化测试。
- 如果所做的修改非常复杂,或者影响到了关键代码,需多次确认这些修改是否完善。
- 提前考虑重构的风险,并调整出更合理的重构方法。
- 所做的修改要提升而非降低程序的内在质量。
(3)避免重构误区
重构是一剂良药,但不是包治百病的灵丹妙药。不要把重构当作先写后改的代名词。重构最大的问题在于被滥用。当代码混乱到几乎无法阅读时,也没有办法在短时间内进行重构,这时与重构代码相比,重写代码或许是一个更经济、有效的方式。
来源:《程序员生存手册》
发表评论