第 1 章 简洁代码
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
马丁-福勒(Martin Fowler)在《重构》(Refactoring:改进现有代码的设计》一书中定义重构时,他展示了重构的优势和好处,以及重构背后的原因。幸运的是,经过二十多年的发展,大多数开发人员都知道了重构和代码气味的含义。 开发人员每天都在处理技术债务,重构已成为软件开发的核心部分。Fowler 在他的奠基之作中使用重构来解决代码气味问题。本书以语义食谱的形式介绍了其中的一些方法,以改进你的解决方案。
1.1 什么是代码气味?
代码气味是问题的症状。人们往往认为出现代码气味就证明整个实体需要拆开重建。这与最初定义的精神不符。代码气味只是改进机会的指标。代码气味并不一定会告诉你哪里出了问题,它只是告诉你要特别注意。
本书的食谱为这些症状提供了一些解决方案。与任何食谱一样,食谱是可选的,代码气味是指南和启发式方法,而不是硬性规定。在盲目应用任何秘方之前,您应该了解问题所在,并评估自身设计和代码的成本与收益。 好的设计需要在指导原则与实际情况和上下文考虑之间取得平衡。
1.2 什么是重构?
回到马丁-福勒(Martin Fowler)的书中,他给出了两个互补的定义:
重构(名词):在不改变软件可观察到的行为的前提下,对软件内部结构进行的修改,使其更易于理解,修改成本更低。
重构(动词):在不改变软件可观察到的行为的情况下,通过应用一系列重构来重组软件。
重构由 William Opdyke 在其 1992 年的博士论文《重构面向对象的框架》中发明,并在 Fowler 的书后开始流行。自 Fowler 定义以来,重构不断发展。大多数现代集成开发环境都支持自动重构。这些重构是安全的,可以在不改变系统行为的情况下进行结构更改。本书有许多自动、安全重构的秘诀,此外还包括语义重构。 语义重构并不安全,因为它们可能会改变系统的部分行为。您应该谨慎应用带有语义重构的配方,因为它们可能会破坏您的软件。我会在适用的配方中说明配方是否包含语义重构。如果您有良好的行为代码覆盖率,您就可以确信不会破坏重要的业务场景。在修正缺陷或开发新功能时,不应同时应用重构配方。
大多数现代企业的持续集成/持续交付管道中都有强大的测试覆盖套件。请参阅 Titus Winters 等人撰写的《Google 的软件工程》(O'Reilly 2020),了解您是否拥有这些测试覆盖套件。
1.3 什么是食谱?
我对 "配方 "一词的使用很随意。 食谱是一套创造或改变某种事物的说明。如果你理解了食谱的精神,那么本书中的食谱就能发挥最佳效果,这样你就能用自己的口味来应用它。本系列中的其他食谱书则更加具体,提供了分步骤的解决方案。要使用本书中的配方,你需要将其转化为你的编程语言和设计方案。秘诀是教你如何理解问题、确定后果并改进代码的工具。
1.4 为什么要编写清洁代码?
整洁的代码易于阅读、理解和维护。 它结构合理、简洁明了,并为变量、函数和类使用有意义的名称。它还遵循最佳实践和设计模式,更注重可读性和行为,而不是性能和执行细节。
在所有不断发展的系统中,每天都要进行更改,因此代码整洁非常重要。在某些不可能尽快实现更新的环境中,这一点尤为重要。这包括嵌入式系统、太空探测器、智能合约、移动应用程序和许多其他应用程序。
经典的重构书籍、网站和集成开发环境侧重于不改变系统行为的重构。本书有一些针对这种情况的方法,比如安全重命名。但你也会发现一些与语义重构相关的秘诀,在这些秘诀中,你会改变解决某些问题的方式。您需要理解代码、问题和配方,才能做出适当的修改。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access