就一个类而言,应该仅有一个引起它变化的原因。
原因:
1每一个职责都是变化的一个轴线,当需求变化时,该变化会反映为类的职责的变化。如果一个类承担了多于一个的职责,那么引起它变化的原因就会有多个。
2如果一个类承担的职责过多,就等于把这些职责耦合在了一起。一个职责的变化可能会削弱或则抑制这个类完成其他职责的能力。
什么是职责?
在SRP中,把职责定义为“变化的原因”。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。
软件的臭味?
1僵化性:很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其他改动。
2脆弱性:对系统的改动会导致系统总和改动的地方在概念上无关的许多地方出现问题。
3牢固性:很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。
4粘滞性:做正确的事情比做错误的事情要困难。
5不必要的复杂性:设计中包含有不具任何直接好处的基础结构。
6不必要的重复:设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。
7晦涩性:很难阅读,理解。没有很好地表现出意图。
原因:
1每一个职责都是变化的一个轴线,当需求变化时,该变化会反映为类的职责的变化。如果一个类承担了多于一个的职责,那么引起它变化的原因就会有多个。
2如果一个类承担的职责过多,就等于把这些职责耦合在了一起。一个职责的变化可能会削弱或则抑制这个类完成其他职责的能力。
什么是职责?
在SRP中,把职责定义为“变化的原因”。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。
软件的臭味?
1僵化性:很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其他改动。
2脆弱性:对系统的改动会导致系统总和改动的地方在概念上无关的许多地方出现问题。
3牢固性:很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。
4粘滞性:做正确的事情比做错误的事情要困难。
5不必要的复杂性:设计中包含有不具任何直接好处的基础结构。
6不必要的重复:设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。
7晦涩性:很难阅读,理解。没有很好地表现出意图。