代码的坏味道就像病人的病状一样,知道了病状,就可以对症下药。文中的重构手法在书中都可以找到。
Duplicated Code
1、同一个类的两个函数含有相同的表达式。重构手法:Extract Method
2、两个互为兄弟的子类内含相同的表达式。重构手法:Extract Method+Pull Up Method或Extract Method+Form Template Method/Substitute Algorithm
3、两个毫不相关的类出现重复代码。重构手法:Extract Class
Long Method
程序愈长愈难理解。我们应该积极地分解函数。可以将过长函数分割成几个小函数,好处就在于解释能力、共享能力、选择能力。遵循这样一条原则:每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途(而非实现手法)命名。重构手法:Extract Method(用于提炼函数)、Replace Temp with Query(用于消除临时变量)、Introduce Parameter Object(用于消除过长的参数)、Preserve Whole Object(为了获取对象的属性方便)、Decompose Conditional(用于分解条件表达式)
Large Class
单个类做太多事情,就会出现太多实例变量,太多的代码,那么Duplicated Code 就自然而然的来了。重构手法:Extract Subclass、Extract Class、Extract Interface
Long Parameter List
太长的参数列难以理解,太多参数会造成前后不一致、不易使用,而且一旦你需要更多数据,就不得不修改它。重构手法:Replace Parameter with Method(将参数用查询方法代替)、Preserve Whole Object、Introduce Parameter Object
Feature Envy(依恋情结)
对象:将数据和对数据的操作行为包装在一起。函数对某个类的兴趣高过对自己所处类的兴趣,一个很明显的例子,某个函数为了计算某个值,从另一个对象那里调用了几乎半打的取值函数,这就是依恋情结。重构手法:Extract Method(提炼函数)+Move Method(移到合适的函数中)
Primitive Obsession
要习惯在小任务上使用对象,如结合数值和币种的money类、由一个起始值和一个结束值组成的range类等。重构手法:Replace Data Value with Object、Replace Type Code with Subclass/Repace Type Code with State/Strategy(替换类型码)
Switch Statements
switch语句的问题就在于重复。面向对象程序可以用多态来优雅地解决以前switch的代码。一看到switch语句,就该考虑是否可以使用多态来替换它。重构方法:Extract Method+Move Method+Replace Type Code with Subclasses/Replace Type Code with State/Strategy+Replace Conditional with Polymorphism(多态)、Replace Parameter with Explicit Methods(使用明确函数取代参数)+Introduce Null Object(不用多态)
Temporary Field
类内有某个实例变量仅为某种特定情况而设,如类中有一个复杂算法,需要好几个变量,为了不传递一长串参数而出现的针对该算法的Temporary Field。重构手法:Extract Class、Intoroduce Null Object。
Middle Man
封装——对外部世界隐藏其内部细节。封装往往会伴随着委托。但过度地委托是不利的。如果某个类一半的函数都委托给另一个函数,这时候就表示过度委托。重构手法:Remove Middle Man、InlineMethod(放进调用端)、Replace Delegation with Inheritance
以上就是我感兴趣的部分。其实还有很多坏味道呢,如Divergent Change、Shotgun Surgery、Data Clumps、Parallel InheritanceHierarchies、Data Class等等。
分享到:
相关推荐
为了应对这一挑战,《重构改善既有代码的设计》第2版提供了一套系统的方法论,以指导开发者通过重构来持续提升代码质量。 首先,书中给出了重构的定义和重要性。重构是一种特殊的代码修改技术,它不会改变程序的...
《重构:改善既有代码设计》是一本由Martin Fowler所著的经典IT著作,它详细阐述了在软件开发过程中如何通过重构来提升代码质量、可读性和维护性。重构是一种系统性的方法,旨在不改变软件外在行为的前提下,改进其...
重构是软件开发过程中的一个重要环节,它关注于改善已有代码的设计,以提高代码的可读性和维护性,同时保持原有功能不变。通过重构,程序员能够更有效地管理代码,提升开发效率,减少错误,并促进团队成员之间的沟通...
于是萌生想做一本重构工具书的想法,本来打算自己重新将重构书的内容再整理归类一下,后来发现原书的目录编排就很适合做工具书,包括坏味道分类,重构手法归类等,都有了一个比较系统的整理。因此,我利用空余时间...
### 《重构 改善既有代码的设计》之代码的坏味道 #### 代码的坏味道简介 重构是一种改进代码质量的重要手段,它不仅能够提升代码的可读性和可维护性,还能帮助开发者更好地理解现有系统架构。《重构 改善既有代码...
重构-改善既有代码的设计+中文版代码重构 代码的新思维 何为优秀代码 代码的坏味道 如何重构 设计重构 设计的基本原理 重构到模式 架构重构
第3章 代码的坏味道 75 3.1 Duplicated Code(重复代码) 76 3.2 Long Method(过长函数) 76 3.3 Large Class(过大的类) 78 3.4 Long Parameter List(过长参数列) 78 3.5 Divergent Change(发散式...
这个过程涉及识别代码中的坏味道(code smell),然后应用一系列微小的、精确的修改,逐步改善代码的整体架构。Fowler在书中详细列举了多种重构模式,这些模式都是经过实践验证的代码优化策略。 书中的中文PDF和...
《重构-改善既有代码设计》是一本专注于软件开发过程中代码优化和重构的权威书籍,尤其对Android、Java、C和C++等编程语言的开发者具有很高的参考价值。本书旨在通过详细的实例和深入的分析,教导读者如何有效地改进...
《重构:改善既有代码的设计》是一本由Martin Fowler所著的经典IT著作,专注于软件开发中的重构技术,旨在提升代码质量并优化设计。重构是软件开发过程中一个至关重要的环节,它通过对现有代码结构进行细微但系统化...
《重构:改善既有代码的设计》是一本在IT行业中极具影响力的书籍,主要探讨的是如何通过重构技术来提升软件代码的质量和可维护性。作者是著名的软件开发专家Martin Fowler,他在书中详细阐述了重构的重要性和实施...
《重构:改善既有代码的设计》是一本经典的软件开发著作,由马丁·福勒撰写,它在软件工程领域具有深远的影响。重构是针对已有代码的一种优化过程,旨在提高代码的可读性、可维护性和整体质量,而不改变其外在行为。...
《重构:改善既有代码的设计》是一本由马丁·福勒所著的经典IT著作,中文繁体版带有侯捷的翻译和注解。这本书是软件开发领域的重要参考书,特别是对于那些致力于提高代码质量和可维护性的程序员和团队。标签中的...
根据提供的文件信息,“重构-改善既有代码的设计.pdf”这一标题及描述表明这是一份专注于讨论如何通过重构技术来优化和改进现有代码结构及其设计的文档。重构是软件开发中的一个重要概念,它指的是在不改变软件外部...
《重构:改善既有代码的设计》是由Martin Fowler等人所著的一本软件开发领域的经典之作。这本书详细阐述了重构的概念、原则和方法,是所有致力于提高软件质量、追求代码设计优雅的程序员不可或缺的学习资料。 重构...