`
squall
  • 浏览: 46353 次
  • 性别: Icon_minigender_1
  • 来自: wuhan
社区版块
存档分类
最新评论

Refactoring 笔记 - 代码的坏味道总结

阅读更多
同一个 class 内的两个或多个方法有重复代码:使用 Extract Method 提抽取复代码。
多个互为兄弟的 class 含重复代码:对这些 class 使用 Extract Method 提抽取复代码,再使用
pull up method 把重复代码向上拉到父类中。
多个不相关的 class 出现重复代码:应该考虑使用 Extract Class,将重复代码抽取到一个独立的
class 中。抽取时应注意这些代码是否真的需要一个独立的类,应照 OO 原则将这些代码归属到
应该拥有这些代码的 class 中。
 
理清 class 的职责,把一些成员变量和方法抽取到一个新的 class 中或子类中。
技巧:可以先确定客户端如何使用它们,使用 Extract Interface 抽取接口,这可以帮助程序员
看清楚该如何分解这个 class。
 
参数过多可以考虑把这些参数由一个对象提供。
如果这些参数缺乏合理的对象归属,可以考虑为它们创建一个参数对象。
 
一般情况下一个变更修改应该只有一个修改点,如果不能做到这点,就应该想想这些地方是否
需要重构了(可以看看 OOAD 原则中的单一责任原则)。
 
如果需要修改的代码散布四处将会很难找到它们,也很容易忘记某个重要的修改。这种情况下
可以考虑把所有需要修改的代码放进同一个 class。如果没有合适的 class 可以创建一个,比如
说创建一个 Inline class。
当发现一个 class 的某个方法中使用了很多另一个对象的方法或值时就应该考虑把这个方法移到
它该去的地方。
有时候方法中只有一部分代码出现这种情况就应该考虑把这部分代码抽取出成独立的方法再移
到它该去的地方。
如果一个方法用上数个 class 的特性,那么应该考虑把这部份代码抽取为一个个的小方法再把它
们移到它该去的地方。
不管怎么说最根本的原则是总是将一起变化的东西放到一块儿。
 
应该使用面向对象中的多态还替换 case 语句。
分享到:
评论

相关推荐

    Refactoring2-free-chapter_cn.pdf

    Refactoring2-free-chapter_cn

    Refactoring-to-pattern

    《Refactoring-to-Pattern》这本书探讨了重构(refactoring)与模式(pattern)之间的结合应用,旨在帮助软件开发者改进现有代码的设计,并通过模式来解决常见的设计问题。本书不仅介绍了重构的基本概念和技术,还...

    Refactoring--Improving the Design of Existing Code(重构,英文清晰版,带完整书签)

    在讨论如何检测不良代码的“味道”之后,读者会深入了解书中的核心内容——超过70个具体的“重构”技巧,这些技巧旨在改善和简化类设计。每个技巧都用“之前”和“之后”的代码示例进行说明,并附有解释。 此外,...

    Python库 | JoeLiu_RF_Refactoring-1.0.2-py3-none-any.whl

    标题中的"Python库 | JoeLiu_RF_Refactoring-1.0.2-py3-none-any.whl"指的是一款名为JoeLiu_RF_Refactoring的Python库,版本为1.0.2。在Python生态系统中,库是可重复使用的代码模块,它们提供了各种功能,帮助...

    refactoring-sql-applications

    6. **最佳实践总结**:归纳总结了重构过程中的一些最佳实践,帮助读者避免常见错误。 #### 四、O’Reilly 出版社资源 1. **相关书籍推荐**: - **《SQL的艺术》**:深入讲解 SQL 的高级用法和设计理念。 - **...

    Professional-Refactoring-Workbook

    1. **重构的基本概念**:重构是系统地改善代码的过程,通过对现有代码进行微小的改动,逐步消除坏味道,提升代码的清晰度和设计质量。 2. **重构的目的**:主要目的是提高代码的可读性和可维护性,降低未来的修改和...

    Refactoring-Presentation-from-JavaOne

    ### Refactoring:改进现有代码的设计 #### 知识点概览 - **重构定义与目的** - **重构的背景** - **重构实例演示** - **重构步骤** - **重构工具介绍** - **重构最佳实践** #### 重构定义与目的 重构...

    Refactoring-重构_改善既有代码的设计

    Refactoring-重构_改善既有代码的设计

    RefactoringSpecifications:Refactoring Specifications - 代码库,其中包含代码规范示例

    重构规范 原始规格 问题:出现频率最高的词 ... 每个提交本身就是一个项目,当我们进入最后一个项目时,所有的验收测试、单元测试和实现代码都被充实了。 这是一种说明开发人员将如何开始编写代码的方式。

    refactoring-improving the design of existing code.pdf

    1. **识别代码坏味道**:书中列举了多种常见的代码坏味道,如“长方法”、“重复代码”、“开关病例”等,并提供了识别这些问题的线索。 2. **重构模式**:Martin Fowler 提供了一系列的重构模式,每个模式都是一个...

    book-refactoring2-code:《重构 改善既有代码的设计第二版》中示例代码

    book-refactoring2-code 存储 《重构: 改善既有代码的设计第二版》的一些示例代码 单元测试 使用 作为我们单元测试套件 运行所有单元测试: npm run test 运行某个单元测试: npx mocha ./src/chapter1/*.test.js 变化...

    31天重构指南--代码重构(refactoring)

    ### 31天重构指南——代码重构(Refactoring) #### 一、代码重构的基本概念 代码重构是指在不改变程序外部行为的前提下,对其内部结构进行调整的过程。这一做法旨在提高程序的质量,包括但不限于提高代码的可读性...

    重构 改善既有代码的设计 随书源码

    1. **识别坏味道**:重构前,开发者需要识别出代码中的"坏味道",比如过长的方法、重复的代码、复杂的条件语句等。这些"坏味道"是代码质量下降的信号,需要通过重构来消除。 2. **提取方法**:当一个方法过于庞大时...

    refactoring - improving your exist coding

    2. **代码坏味道**:书中列举了许多常见的代码“坏味道”,如冗余代码、复杂的条件表达式、过长函数等,这些都是需要进行重构的标志。 3. **重构步骤**:详细解释了进行重构的一般流程,包括识别问题、设计改进方案...

    DSP-refactoring-前端项目-vueflask.zip

    DSP_refactoring_前端项目_vueflask.zip DSP_refactoring_前端项目_vueflask.zip DSP_refactoring_前端项目_vueflask.zipDSP_refactoring_前端项目_vueflask.zip DSP_refactoring_前端项目_vueflask.zip

    Refactoring - Improving the Design of Existing Code

    总之,这本书不仅教导我们如何识别和处理代码的坏味道,还鼓励我们养成良好的编程习惯,通过持续的重构实践,不断提升代码质量和软件工程的水平。它对于任何想要提升自己代码质量,改善项目维护性的开发者来说,都是...

    重构-改善既有代码的设计 英文原版

    ### 重构:改善既有代码的设计 #### 知识点概览 1. **重构的概念与重要性** 2. **重构的作者与贡献者** 3. **重构的目的与目标受众** 4. **重构的方法与技巧** 5. **重构与单元测试的关系** 6. **重构中的设计模式...

Global site tag (gtag.js) - Google Analytics