《重构 改善既有代码的设计》,让我们了解本书中那些坏味道,不仅仅可以发现代码中的那些坏味道,更可以鞭策自己以及整个团队,在一开始就尽量不写或少些这种代码,并深入地理解架构、理解业务、理解需求,减少因设计失误而导致徒劳的反复重构。
1. 什么是重构
重构是指在不改变既有代码外部行为的前提下,对代码内部进行修改,以改善其设计和可读性,从而使得代码更加易于理解、扩展和维护。
改善既有代码的设计可以通过以下几种方式来实现:
-
提高抽象水平:将代码中的具体实现细节抽象成更高层次的概念或模块,从而提高代码的可复用性和可扩展性。
-
消除重复代码:通过抽象出通用逻辑或函数,消除代码中的重复代码,从而降低代码的复杂度和维护成本。
-
分离关注点:将代码中的不同关注点分离开来,例如将用户界面和业务逻辑分离,从而使得代码结构更加清晰、易于理解和维护。
-
提高代码可测试性:通过引入依赖注入、Mocking等技术,增加代码的可测试性,从而降低测试的难度和成本。
总之,改善既有代码的设计需要我们通过深入理解代码和需求,识别出代码中的问题和缺陷,并采取合适的技术手段进行改进。这样做可以帮助我们提高代码的质量和效率,降低维护成本,增强代码的可读性和可维护性。
2. 为什么要重构
-
重构改进软件的设计。
-
让添加新功能更容易。
-
使代码更容易理解
-
提供开发的速度与方便定位错误
- 提高代码质量
3. 何时重构
-
增加功能时重构。
-
修补错误时重构。
-
复审代码时重构。
4. 代码的坏味道
- 神秘命名(Mysterious Name)
- 重复代码(Duplicated Code)
- 过长函数(Long Method)
- 过大的类(Large Class)
- 过长参数列(Long Parameter List)
- 发散式变化(Divergent Change)
- 霰弹式修改(Shotgun Surgery)
- 依恋情结(Feature Envy)
- 数据泥团(Data Clumps)
- 基本类型偏执(Private Obsession)
- switch惊悚现身(Switch Statements)
- 平行继承体系(Parallel Inheritance Hierarchies)
- 冗赘类(Lazy Class)
- 夸夸其谈的未来星(Speculative Generality)
- 令人迷惑的暂时字段(Temporary Field)
- 过度耦合的消息链(Message Chains)
- 中间人(Middle Man)
- 内部交易(Insider Trading)
- 异曲同工的类(Alternative Classes with DifferentInterfaces)
- 不完美的库类(Incomplete Library Class)
- 纯数据类(Data Class)
- 被拒绝的遗赠(Refused Bequest)
- 过多的注释(Comments)