单一职责原则

单一职原则 SRP「Single responsibility principle」:就一个类而言,应该仅有一个引起它变化的原因。修改代码总是一件危险的事情,特别是当两个职责耦合在一起的时候,一个职责发生变化可能会影响到其他职责的实现,造成意想不到的破坏。因此一个对象(方法)只做一件事情

何时应该分离职责

要明确的是,并不是所有的职责都应该一一分离

一方面,如果随着需求的变化,有两个职责总是同时变化,那就不必分离他们。比如在 ajax 请求的时候,创建 xhr 对象和发送 xhr 请求几乎总是在一起的,那么创建 xhr 对象的职责和发送 xhr 请求的职责就没有必要分开

另一方面,职责的变化轴线仅当它们确定会发生变化时才具有意义,即使两个职责已经被耦 合在一起,但它们还没有发生改变的征兆,那么也许没有必要主动分离它们,在代码需要重构的 时候再进行分离也不迟

优缺点

优点

降低了单个类或者对象的复杂度,按照职责把对象分解成更小的粒度,这有助于代码的复用,也有利于进行单元测试。当一个职责需要变更的时候,不会影响到其他的职责

缺点

明显的增加编写代码的复杂度。当我们按照职责把对象分解成更小的粒度后,实际上也增大了这些对象之间相互联系的难度。

jQuery 的 attr 是个非常庞大的方法,既负责赋值又负责取值,这对于 JQuery 的维护者来说,会带来一些困难,但对于 jQuery 的用户来说,却简化了用户的使用