文件名称:何时应该分离职责-清华大学计算机考研经验贴.
文件大小:8.5MB
文件格式:PDF
更新时间:2024-07-15 10:06:33
javasc
18.2 何时应该分离职责 SRP 原则是所有原则中 简单也是 难正确运用的原则之一。 要明确的是,并不是所有的职责都应该一一分离。 一方面,如果随着需求的变化,有两个职责总是同时变化,那就不必分离他们。比如在 ajax 请求的时候,创建 xhr 对象和发送 xhr 请求几乎总是在一起的,那么创建 xhr 对象的职责和发送 xhr请求的职责就没有必要分开。 另一方面,职责的变化轴线仅当它们确定会发生变化时才具有意义,即使两个职责已经被耦 合在一起,但它们还没有发生改变的征兆,那么也许没有必要主动分离它们,在代码需要重构的 时候再进行分离也不迟。 18.3 违反 SRP 原则 在人的常规思维中,总是习惯性地把一组相关的行为放到一起,如何正确地分离职责不是一 件容易的事情。 我们也许从来没有考虑过如何分离职责,但这并不妨碍我们编写代码完成需求。对于 SRP 原则,许多专家委婉地表示“This is sometimes hard to see.”。 一方面,我们受设计原则的指导,另一方面,我们未必要在任何时候都一成不变地遵守原则。 在实际开发中,因为种种原因违反 SRP 的情况并不少见。比如 jQuery 的 attr等方法,就是明显 违反 SRP 原则的做法。jQuery 的 attr 是个非常庞大的方法,既负责赋值,又负责取值,这对于 jQuery 的维护者来说,会带来一些困难,但对于 jQuery 的用户来说,却简化了用户的使用。 在方便性与稳定性之间要有一些取舍。具体是选择方便性还是稳定性,并没有标准答案,而 是要取决于具体的应用环境。比如如果一个电视机内置了 DVD 机,当电视机坏了的时候,DVD 机也没法正常使用,那么一个 DVD 发烧友通常不会选择这样的电视机。但如果我们的客厅本来 就小得夸张,或者更在意 DVD 在使用上的方便,那让电视机和 DVD 机耦合在一起就是更好的 选择。 图灵社区会员 balabala233 专享 尊重版权