`
bulargy
  • 浏览: 66518 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

7种设计坏味道和11种原则

阅读更多
转的文章,出处太多了,也不知道到底哪个才是真的出处。

  7种设计坏味道
1.僵化性: 很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动。

2.脆弱性: 对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。

3.牢固性: 很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。

4.粘滞性: 做正确的事情比做错误的事情要困难。

5.复杂性(不必要的): 设计中包含有不具任何直接好处的基础结构。

6.重复性(不必要的): 设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。
  7.晦涩性: 很难阅读、理解。没有很好地表现出意图。

11种原则 - Principle

----类原则

1.单一职责原则 - Single Responsibility Principle(SRP)

就一个类而言,应该仅有一个引起它变化的原因。

(职责即为“变化的原因”。)

2.开放-封闭原则 - Open Close Principle(OCP)

软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。

(对于扩展是开放的,对于更改是封闭的.

关键是抽象.将一个功能的通用部分和实现细节部分清晰的分离开来.

开发人员应该仅仅对程序中呈现出频繁变化的那些部分作出抽象.

拒绝不成熟的抽象和抽象本身一样重要. )

3.里氏替换原则 - Liskov Substitution Principle(LSP)

子类型(subclass)必须能够替换掉它们的基类型(superclass)。

4.依赖倒置原则(IoCP) 或 依赖注入原则 - Dependence Inversion Principle(DIP)

抽象不应该依赖于细节。细节应该依赖于抽象。

(Hollywood原则: "Don't call us, we'll call you".

程序中所有的依赖关系都应该终止于抽象类和接口。

针对接口而非实现编程。

任何变量都不应该持有一个指向具体类的指针或引用。

任何类都不应该从具体类派生。

任何方法都不应该覆写他的任何基类中的已经实现了的方法。)

5.接口隔离原则(ISP)

不应该强迫客户依赖于它们不用的方法。

接口属于客户,不属于它所在的类层次结构。

(多个面向特定用户的接口胜于一个通用接口。)

----包内聚原则

6.重用发布等价原则(REP)

重用的粒度就是发布的粒度。

7.共同封闭原则(CCP)

包中的所有类对于同一类性质的变化应该是共同封闭的。

一个变化若对一个包产生影响,

则将对该包中的所有类产生影响,

而对于其他的包不造成任何影响。

8.共同重用原则(CRP)

一个包中的所有类应该是共同重用的。

如果重用了包中的一个类,

那么就要重用包中的所有类。

(相互之间没有紧密联系的类不应该在同一个包中。)

----包耦合原则

9.无环依赖原则(ADP)

在包的依赖关系图中不允许存在环。

10.稳定依赖原则(SDP)

朝着稳定的方向进行依赖。

应该把封装系统高层设计的软件(比如抽象类)放进稳定的包中,

不稳定的包中应该只包含那些很可能会改变的软件(比如具体类)。

11.稳定抽象原则(SAP)

包的抽象程度应该和其稳定程度一致。

(一个稳定的包应该也是抽象的,一个不稳定的包应该是抽象的. )

----其它扩展原则----

12.BBP(Black Box Principle)黑盒原则

多用类的聚合,少用类的继承。

13.DAP(Default Abstraction Principle)缺省抽象原则

在接口和实现接口的类之间引入一个抽象类,这个类实现了接口的大部分操作.

14.IDP(Interface Design Principle)接口设计原则

规划一个接口而不是实现一个接口。

15.DCSP(Don't Concrete Supperclass Principle)不要构造具体的超类原则

避免维护具体的超类。

16.迪米特法则
一个类只依赖其触手可得的类。
分享到:
评论

相关推荐

    编码中的21种代码坏味道

    在设计和编码中,存在着21种代码坏味道,这些坏味道可能会给后续维护带来极大影响。如果我们能够识别和消除这些坏味道,那么我们的代码将变得更加简洁、可维护和可扩展。 Duplicated Code(重复的代码) ...

    代码坏味道整理

    这些坏味道通常会使代码难以理解、维护和扩展,降低了软件的质量。为了提高代码可读性和可维护性,识别并消除代码坏味道是至关重要的。以下是关于代码坏味道的一些关键知识点: 1. **重复代码(DRY原则)**:如果...

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

    ### 《重构 改善既有代码的设计》之代码的坏味道 #### 代码的坏味道简介 重构是一种改进代码质量的重要手段,它不仅能够提升代码的可读性和可维护性,还能帮助开发者更好地理解现有系统架构。《重构 改善既有代码...

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

    总结来说,软件重构是一项关键的技能,它要求开发者时刻关注代码的结构和设计,通过遵循重构原则,识别并消除代码的坏味道,从而提高代码的可读性和可维护性。这是一个持续的过程,需要在项目开发的每一个阶段都加以...

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

    在第三章中,作者详细列举了多种"代码的坏味道",也就是代码中常见的问题和反模式,旨在帮助开发者识别这些问题并进行有效的重构。 "源码"标签表明我们将关注代码的实际结构和质量,而"工具"标签则暗示可能涉及到...

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

    代码的坏味道是指在编程过程中可能出现的不良编程习惯,这些习惯可能导致代码难以理解和维护。以下是一些常见的代码坏味道及其对应的重构方法: 1. **重复代码 (DRY - Don't Repeat Yourself)**:通过提炼方法、...

    5种出现次数较多的代码坏味道

    以下是我近期在代码审查中注意到的五种出现次数较多的代码坏味道,并针对每一种提供了解决建议。 1. 过大的类:遵循“单一职责原则”是编写可维护代码的关键。当一个类承担了过多的职责,变得过大时,就违反了这个...

    高质量程序设计指南高质量程序设计指南

    1. **设计原则**:书中首先阐述了程序设计的基本原则,如单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP),这些原则指导开发者构建灵活、可扩展的系统。...

    重构-改善既有代码的设计(含中文PDF,英文chm)

    7. **面向对象设计原则**:Fowler提到了SOLID原则,包括单一职责原则(Single Responsibility Principle)、开闭原则(Open-Closed Principle)、里氏替换原则(Liskov Substitution Principle)、接口隔离原则...

    重构与设计模式

    设计中可能出现的“坏味道”包括: - **僵化性**:系统难以适应变化。 - **脆弱性**:小改动可能引发大问题。 - **牢固性**:过度耦合,修改一处可能需要全面审查。 - **晦涩性**:代码难以理解和维护。 - **粘滞性...

    重构:改善既有代码的设计(英文原版和德语版)

    2. **识别坏味道**:书中列举了数十种代码“坏味道”,如冗余代码、复杂的条件表达式、过长的方法等,这些都是需要重构的标志。通过识别这些坏味道,开发者可以有针对性地改进代码。 3. **重构技术**:这部分提供了...

    构改善既有代码的设计

    1. **识别代码坏味道**:书中列举了多种常见的代码坏味道,如重复代码(Duplicated Code)、长方法(Long Method)和数据泥团(Data Clumps)等。这些坏味道是代码需要重构的信号。 2. **重构策略与技术**:马丁·...

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

    这本书详细阐述了重构的概念、原则和方法,是所有致力于提高软件质量、追求代码设计优雅的程序员不可或缺的学习资料。 重构(Refactoring)是一种改进软件内部结构而不改变其外部行为的实践。在软件工程中,重构...

    重构_改善既有代码的设计完整版

    通过学习和实践书中的原则和技巧,开发者可以提升自己的代码质量,为团队带来更高效、更可持续的软件产品。总的来说,《重构:改善既有代码的设计》是每一个致力于提高代码质量和设计的IT从业者不可或缺的参考书籍。

    重构-改善既有代码设计

    在软件开发中,重构是一项至关重要的技能,它涉及到在不改变代码外在行为的前提下,改进其内部结构,消除代码中的坏味道,使得代码更易于理解和修改。作者通过对各种重构技术的阐述,帮助开发者理解何时以及如何进行...

    重构改善既有代码的设计(经典ppt)

    11. **开闭原则**:设计应对扩展开放,对修改关闭。通过接口和抽象类实现这一目标,允许添加新功能而不影响现有代码。 12. **单一职责原则**:每个类或模块应只有一个明确的责任,避免“多面手”导致的复杂性。 13...

    java重构改善既有代码设计

    在这个过程中,开发者通过一系列小型、精确的步骤改进代码,消除坏味道,提高设计质量,同时保持软件功能不变。"java重构改善既有代码设计"的主题涵盖了多种实践和原则,包括识别重构的信号、选择合适的重构技术以及...

Global site tag (gtag.js) - Google Analytics