`

【转载】关于重构,代码的坏味道,应该重构的代码

阅读更多
转载地址:http://my.oschina.net/u/572987/blog/94140


1.重复的代码:

重复代码在同一个类中的不同方法中,则直接提炼为一个方法

如果重复代码在两个互为兄弟的子类中,则将重复的代码提到父类中

如果代码类似,则将相同部分构成单独函数,或者用 Template Method 设计模式

重复代码出现在不相干的类中,则将代码提炼成函数或者放在独立的类中


2.过长的函数:


降低了可读性,应该将独立的功能提炼成新函数


3. 过大类

使得责任不清晰,容易造成重复代码,混乱,应该将过大类的功能拆分成多个功能单一的小类


4.过长的参数列

过长的参数列难以理解,而且容易传错参数。应该将参数列表用参数对象替换

5.发散式变化:

一个类由于不同的原因而被修改。应该将类拆分成多个,每个类只因为一种变化而修改。

6.霰弹式修改:

与发散式变化相反,遇到变化时需要修改许多不同的类。应该将类似的功能放到一个类中


7.依恋情结:

函数对某个类的兴趣高过对自己所处的类,通常是为了取其他类中的数据。应该将函数部分功能移到它感兴趣的类中


8.数据泥团:

在多个地方看到相同的数据项。例如:

      多个类中相同的变量,多个函数中相同的参数列表,并且这些数据总是一起出现。应该将这些数据项放到独立的类中


9.基本类别偏执:

对象技术的新手通常不原因在小任务上运用小对象,比如结合数值和币别的money class,等,应该Replace Data Value with Object。


10.分支语句:

大量的分支、条件语句导致过长的函数,并且可读性差。应将它变成子类或者使用 State和 Strategy模式


11.平行继承体系

是霰弹式修改的特殊情况。一般是当你为某个类增加了一个子类,必须也为另一个类相应的增加一个子类。如果你发现某个继承体系的class名称前缀和另一个继承体系的class名称前缀完全相同。变素有问题了。 应该让一个继承体系的实体(instance)指涉(参考,引用,refer to)另一个继承体系的实体。


12 冗赘类(lazy class)

几乎没有用的组建 应该进行inline class


13.夸夸其谈未来性

现在用不到,觉得未来可以用到的代码,要警惕。应该将用不上的代码去掉


14.过度耦合的消息链

一个对象请求另一个对象,后者又请求另外的对象,然后继续。。。。,形成耦合的消息链。应该公布委托对象供调用


15 纯粹的数据类

  将数据类中数据以Public方式公布,没对数据访问进行保护。应该 将数据封装起来,提供Get/Set方法。

16 过多的注释

代码有着长长的注释,但注释之所以多是因为代码很糟糕。先重构代码,再写上必要的注释

17 令人迷惑的暂时值域

如某个instance变量仅为某特定情况而设,在变量未被使用的情况下猜测当初设置目的非常困难。应该建立一个新的class,把所有和这个变量相关的代码都放到里面。
分享到:
评论

相关推荐

    《重构 改善既有代码的设计》之代码的坏味道

    通过对代码进行观察,当开发者感觉到某段代码似乎存在某种问题时,他们应该能够敏锐地识别出这些“坏味道”,进而采取相应的重构策略来解决问题。 #### 代码的坏味道列表详解 1. **重复代码 (Duplicated Code)** ...

    代码的坏味道 重构方式对应表

    20. **过多的注释**:重构代码,使其自解释,减少不必要的注释。 21. **怪异解决方案**:替换不符合系统风格的解决方案,统一编程模式。 22. **替换算法**:根据具体情况选择更适合的算法,可能需要引入新设计模式...

    软件重构技术(重构介绍、重构原则、代码的坏味道。。。)

    重构,正如标题所言,包括了“重构介绍”、“重构原则”以及“代码的坏味道”等多个方面,旨在提高代码的可读性、可维护性和整体质量。 首先,我们来探讨“重构介绍”。重构是一种系统性的修改现有代码的过程,目的...

    代码坏味道整理

    以下是关于代码坏味道的一些关键知识点: 1. **重复代码(DRY原则)**:如果相同的代码片段在多个地方出现,那么就违反了“Don't Repeat Yourself”的原则。应该将重复的代码提取到一个单独的函数或模块中,以实现...

    重构_重构_改善既有代码_

    这一过程包括识别代码中的坏味道(code smell)——那些表明代码可能存在潜在问题的迹象,并应用一系列小型、安全的重构步骤来消除这些问题。 书中的重构模式(Refactoring Patterns)提供了具体的指导,例如: 1....

    重构-第3章 代码的坏味道-读书笔记

    《重构-第3章 代码的坏味道》是软件开发领域的一本经典著作,由Martin Fowler所著。这本书深入探讨了如何识别并消除代码中的不良设计模式,以提高代码质量、可读性和可维护性。在第三章中,作者详细列举了多种"代码...

    重构改善既有代码的设计第2版.pdf

    重构的实践中,识别代码中的“坏味道”至关重要。所谓“坏味道”,是指那些指向代码质量问题的不良迹象。例如,“神秘命名”、“重复代码”、“过长函数”和“发散式变化”等,这些都是代码库中经常需要关注的重构...

    重构改善既有代码的设计PPT课件

    识别代码的“坏味道”是重构的重要步骤。例如,重复代码是常见的问题,可以通过提炼函数或应用设计模式如Template Method来消除。过长的函数降低了代码可读性,可以将其拆分为多个独立的功能。过大类的责任不明确,...

    代码重构.pdf

    书中详细阐述了重构代码的必要性、重构的时机以及如何安全地重构代码。重构指的是在不改变软件外部行为的前提下,改进其内部结构的过程。这是一种在软件开发中不断优化代码质量、提高软件可维护性的技术。 重构技术...

    代码重构&模式

    1. **识别坏味道**:通过识别代码中的“坏味道”(如过长函数、重复代码、复杂的条件表达式等)来确定需要重构的部分。 2. **小步前进**:每次重构都应进行小规模的改动,并频繁地运行测试,确保代码的行为未被改变...

    软件工程中的代码重构技术.pptx

    - 根据代码中存在的“坏味道”(如重复代码、冗长方法等)选择合适的重构方法。 - 进行重构操作。 - 检查重构后的代码是否仍然能够正确运行。 - 重新运行测试用例验证重构效果。 **2.3 重构的实战** - **识别...

    java代码重构经验总结

    本文将深入探讨Java代码重构的关键点,涵盖重构原则、重构技巧以及常见的代码“坏味道”(bad smells),并结合示例代码进行分析。 #### 一、重构的重要性与原则 **1. 重构时机** - **版本控制前的重构:** 在...

    几种常见的稀疏重构算法代码.rar_FOCUSS重构_Focuss算法_focuss稀疏重构_压缩感知算法_稀疏重构

    在这个压缩包"几种常见的稀疏重构算法代码.rar"中,包含了FOCUSS算法的具体实现代码,可以帮助研究者和工程师理解并应用该算法。这些代码可能包括不同编程语言版本(如Python、MATLAB等),并且可能包含对不同数据...

    重构 _改善既有代码的设计(中文版) pdf

    Martin Fowler提出,在进行重构时,我们应该保持重构的连续性,这意味着在发现代码需要改进时就立刻进行,而不是积累一大堆待重构项之后再集中处理。这样可以保证代码库始终处于易于管理的状态。 为了支持程序员的...

    Python代码重构的艺术:探索自动化重构工具

    ### Python 代码重构的艺术:探索自动化重构工具 #### 一、引言 Python 作为一门高级编程语言,自1991年首次发布以来,便以其简洁易读的语法、强大的标准库支持以及广泛的跨平台特性赢得了众多开发者的青睐。随着...

Global site tag (gtag.js) - Google Analytics