论“单一责任”与对象验证的编码实践

时间:2012-11-10 04:29:48

标签: oop single-responsibility-principle

  

可能重复:
  What does the single responsibility principle mean for validation

案例A:验证对象 - >发送至方法 - >方法假定有效对象 - >方法执行
案例B:发送至方法 - >方法检查对象有效性 - >方法仅在有效

时执行

在案例A中,我可以让方法负责1个任务(执行)。但是,我可能会意外传递无效对象。 (当然,我可以通过仔细编码来防止这种情况,但这是我的问题的核心......)

在B情况下,该方法永远不会对无效对象执行,但它必须不仅要负责执行其代码,还要负责对象验证。这不是违反“单一责任”吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

最好的编码实践是

情况C:对象通过构造有效意味着无法构造无效的实例,并且所有方法在以有效状态调用时都会转换为有效状态。

在这种情况下,对象本身对其有效性负责,并且任何其他检查只是在对象未达到其保证的情况下快速失败。


例如,使用链接列表,您可以让路人和接收者检查列表是否格式正确,但每个列表可能有很多,因此您必须复制工作。

如果链表本身对其自身的有效性负责,那么它的create / add / remove / concatenate / copy操作都保持有效性,那么只涉及一个类,并且由于它具有特权访问权限,因此工作更容易阴部。

相关问题