设计异味

设计异味是计算机编程领域,设计所用结构违背了基本设计原则并对设计质量有负面影响。这个术语源自马丁·福勒在《重构-改善既有代码的设计》一书中描述的代码异味。

不同作者对“异味”(smell)有不同的定义:

  • N. Moha等:“代码与设计异味是差的解决方案,导致了实现与设计问题”
  • R. C. Martin:“设计异味是腐败的软件的气味”
  • Fowler:“异味是代码中特定的结构导致了重构的可能”

*重复的抽象(Duplicate abstraction)
*缺乏封装(Deficient encapsulation)
*未分解的架构(Unfactored hierarchy)、无用“IS-A”。
*循环的架构(Cyclic hierarchy)。

  • 僵化(Rigidity):系统难以修改,因为每个改变迫使系统其他部分也要做出修改。
  • 脆弱(Fragility):一个修改可能引发没有概念关系的其他地方的崩溃。
  • 顽固(Immobility):很难把系统分离为可被其他系统重用的模块
  • 粘滞(Viscosity):做正确的事比做错事更难。
  • 不必要的复杂(Needless Complexity):设计包含了没有直接好处的基础设施。
  • 不必要的重复(Needless Complexity):设计包含了本可以用一个抽象统一起来的重复的结构。
  • 晦涩(Opacity):难以阅读与理解。不能很好的表达其意图。

面向对象设计的有助于消除异味的原则
面向对象设计的SOLID五大原则:
单一功能原则:一个类只应有一个“改变的原因”(即功能);
开闭原则:软件实体(类、模块、函数等)应当对扩展是开放的,对修改是关闭的;
里氏替换原则:子类型能替换基类型;
依赖反转原则:高层模块不应依赖于低层模块,二者应当依赖于抽象。抽象不应依赖与细节。细节应当依赖于抽象。
接口隔离原则:类应当有胖(fat)接口,可被分为方法的分组。每个分组服务于不同的客户集。客户不应当知道这些分组是在同一个类中。
参见

  • 代码异味
  • 反模式

*

  • 技术负债

参考文献

评论 (0)

  • 还没有评论,来抢沙发吧。