每一个软件模块都应具有三个职责:
1.第一职责是它运行起来所完成的功能.这也是该模块得以存在的原因.
2.第二职责是它要应对变化,几乎所有的模块在它们的生命周期中变化,开发者有责任保证这种改变应该可能的简单.一个难以改变的模块是拙劣的,即使可以工作,也需要对其进行修正.
3.第三职责是要和阅读它的人进行沟通,对该模块不熟悉的开发人员应该能够比较容易的阅读并理解它.一个无法沟通的模块也是拙劣的,同样要进行修改.
当软件出现下面任何一种气味时,说明软件正在腐化
1.僵化性:很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其他改动.
2.脆弱性:对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题.
3.牢固性:很难解开系统的纠结,使之成为一些可在其他系统中重用的组件.
4.粘滞性:做正确的事情比做错误的事情更困难.
5.不必要的复杂性:设计中包含有不具有任何直接好处的基础结构.
6.不必要的重复:设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一.
7.晦涩性:很难阅读和理解,没有很好的表现出意图.
1.第一职责是它运行起来所完成的功能.这也是该模块得以存在的原因.
2.第二职责是它要应对变化,几乎所有的模块在它们的生命周期中变化,开发者有责任保证这种改变应该可能的简单.一个难以改变的模块是拙劣的,即使可以工作,也需要对其进行修正.
3.第三职责是要和阅读它的人进行沟通,对该模块不熟悉的开发人员应该能够比较容易的阅读并理解它.一个无法沟通的模块也是拙劣的,同样要进行修改.
当软件出现下面任何一种气味时,说明软件正在腐化
1.僵化性:很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其他改动.
2.脆弱性:对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题.
3.牢固性:很难解开系统的纠结,使之成为一些可在其他系统中重用的组件.
4.粘滞性:做正确的事情比做错误的事情更困难.
5.不必要的复杂性:设计中包含有不具有任何直接好处的基础结构.
6.不必要的重复:设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一.
7.晦涩性:很难阅读和理解,没有很好的表现出意图.