在《Clean Code》一书中,Kent Beck说过我们有80%的时间是在维护代码,因此编写Clean Code很重要,但是,如果大家一来就面对已经开始腐烂的代码怎么办呢?《Working Effectively With Legacy Code》一书给出了答案,该书可以说是《Clean Code》和《Refactoring》的结合体。该书列举了工作在Legacy Code上的程序员会遇到的各种各样的情况,然后给出了在各种情况下,可以选择的策略。
场景一:时间紧迫,必须修改
可采用的策略有
1、新生方法:当需要修改的代码能够独立成块的时候,使用新生方法。
2、新生类:为某个类添加新的职责,或者被修改的类很难放进测试。
3、外覆方法:当出现2个行为需要同时出现时实现,使用外覆方法有2种形式,一是创建与原方法同名的方法,然后修改原方法名,另一个是创建一个新的方法。
4、外覆类:当想添加的行为是完全独立的,或者是原类已经很大,不想让它变得更臃肿。
其实从场景来看,这四个策略都是很容易修改代码,添加新特性,而且危险系数很低,尤其是在有IDE的refactor功能帮忙的情况下,另外,这几个策略,解决的都是无法把原类纳入测试范围中,可是,却想把新增加的功能纳入测试范围下的难题。即使再急,也必须写测试,不然代码就会彻底腐烂了。
场景二:漫长的修改
工作在遗留代码上时,理解现有代码将是一个漫长的过程,把现有代码纳入测试范围也是一件非常耗时的过程,没有测试,对于我们的每一个修改,获取反馈的周期会特别长,而这就是影响我们工作效率最大的凶手。而无法把现有代码纳入测试的一个最大原因就是现有代码的依赖,因此,对于这个场景,作者的建议策略就是解依赖,具体步骤如下:
1、定位哪些依赖类会成为拦路虎
2、对依赖类进行接口提取
这也就是面向对象经常说的依赖倒置原则,提取结构以后,就可以通过一些很简单的fake对象来完成原代码类的实例化,从而就很容易把其纳入测试范围下,从而缩短修改代码的反馈时间,最终缩短修改代码的时间。
分享到:
相关推荐
《修改代码艺术(Working Effectively with Legacy Code)》是一本专为软件开发人员设计的经典书籍,专注于如何在已有代码库中进行高效、安全的修改。这本书由Michael Feathers撰写,旨在帮助开发者面对和改善那些缺乏...
2. 单元测试:在修改代码时,单元测试是保证改动不会引入新错误的关键工具。编写覆盖率高的单元测试可以有效地验证代码的正确性,并在后续修改中提供安全网。 3. 重构:重构是改善代码结构而不改变其外部行为的过程...
在TDD的过程中,开发者需要持续集成和自动化测试,以确保每次代码更改后,所有的测试仍然能够通过。这需要使用到像JUnit、pytest这样的测试框架,它们提供了方便的断言方法和测试运行机制。同时,mocking和Stubbing...
根据提供的文件信息,我们可以推断出此文档与一本名为《修改代码的艺术》的书籍有关,该书主要讨论了如何高效、优雅地修改已有代码的方法和技术。尽管提供的具体内容部分仅包含了两个下载链接,但我们仍可以从标题、...
- 回归测试:当代码更改后,应重新运行所有相关测试,确保没有引入新错误。 - 测试优先:他认为测试应该作为设计的一部分,而不是事后补充。 - 测试命名约定:良好的测试名称能帮助理解测试的目的,如"Given_When...
《修改代码的艺术》是一本深度探讨软件重构与代码优化的经典著作。这本书主要针对软件开发者,尤其是那些希望提升代码质量和可维护性的程序员。作者通过丰富的实例和深入的分析,揭示了如何优雅地改进既有代码,使其...
而《修改代码的艺术》则属于罕见的第三种类型——它不是简单地介绍新技术,也不是单纯地复述已有技术,而是在长期实践中形成的一系列技术手法的集合。这样的书籍通常比较少见,因为它们的编写需要长期的经验积累和...
《修改代码的艺术》是一本深入探讨代码重构与优化的经典之作,它主要面向的是那些热衷于提高代码质量、追求卓越编程技巧的软件开发者。书中的内容涵盖了如何在维护和改进现有代码库时,运用一系列方法和策略来提升...
添加特性、修正缺陷、改进设计、优化性能把遗留代码放到测试用具之中编写测试,防止引入新的问题包含Java、C++、C和C#的示例,其中介绍的大多数技术适用于其他任何语言或平台,精确地确定要在哪些地方修改代码处理非...
通过学习《修改代码的艺术》,开发者不仅可以提升自己的代码修改技巧,还能掌握一套系统的方法来处理复杂的代码维护问题,从而在实践中实现代码质量的持续提升。无论是对于个人开发者还是团队,这本书都是值得珍藏的...
本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作,而且从涵盖面和深度上都超过了前两部经典。书中不仅讲述面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。作者将...
《重构于模式、修改代码的艺术》是一本深入探讨软件开发中代码优化的重要书籍。它旨在帮助程序员在不改变代码外部行为的基础上,通过一系列系统性的方法和技巧,改善代码的内部结构,使其更易于理解、维护和扩展。这...
本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作,而且从涵盖面和深度上都超过了前两部经典。书中不仅讲述面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。作者将...
3. **重构的原则**:始终保持代码可运行,每次重构的步骤都应小到可以立即测试,确保重构过程不会引入新的错误。 4. **重构的步骤**:识别坏味道的代码,选择合适的重构模式,执行重构,测试以确保未改变代码功能,...
在软件开发领域,编写易维护的代码是至关重要的。易维护的代码不仅使得开发者能够高效地进行迭代和修复,还能降低项目的长期成本。本文将基于《修改软件的艺术:构建易维护代码的9条最佳实践》一书,深入探讨这9条...
本书是一部里程碑式的著作,针对大型的、无测试的遗留代码基,提供了从头到尾的方案,让你能够更有效地应付它们,将你的遗留代码基改善得具有更高性能、更多功能、更好的可靠性和可控性。本书还包括了一组共24项解...