一个对象应该只做一件事的想法来自哪里?

时间:2009-11-09 20:54:41

标签: oop

我不确定我同意它,所以我想找到这个想法背后的书或期刊文章,以便我可以检查我是否理解他们所说的内容以及他们的意思。< / p>

我想我理解这个想法 - 我只是想知道消息来源,所以我可以查看这个想法的来源。

为什么我要问:

术语“做一件事”是模糊的,可能意味着许多事情,包括“每个班级只有一种方法”(荒谬)......我认为这可能意味着一个单一的责任(即很多方法。)它也是不是特别有用,因为你必须判断一个单一的责任何时变得复杂到足以需要通过某种授权来重构几个职责......

5 个答案:

答案 0 :(得分:21)

来自Bob Martin的SOLID原则。

确切地说

Single Responsibility Principle

虽然在单一责任原则章节的第一页中,他说:

  

这一原则在Tom DeMarco和Meilir Page-Jones的着作中有所描述。他们   称之为凝聚力。

他提到的工作的参考文献是:

  • 结构化分析与系统规范,Tom DeMarco,Yourdon Press Computing Series,1979
  • 结构化系统设计实用指南,2d。编辑,Meilir Page- Jones,Yourdon Press Computing Series,1988

其他来源(来自S.Lott的评论)包括:

答案 1 :(得分:6)

在软件中发明模块化概念的人是David Parnas博士。经典论文是On the Criteria To Be Used in Decomposing Systems into Modules

虽然他一般不会谈论OO(因为它还没有),OO的想法自然地从Parnas博士的工作中延伸出来。这项工作的一部分是分析如何将软件分解为模块,并且模块应该是单一目的。

答案 2 :(得分:1)

单一责任原则 - 检查here以获取有关该主题的一些信息。

答案 3 :(得分:1)

有什么来源,我认为这不是OO中的常见想法。 一个对象可能做很多事情。

答案 4 :(得分:0)

单一责任原则(SRP)在Java世界中非常普遍。这里提到的参考文献很好。

这个原则几乎可以应用于类和方法,因为这对两者都是一个好主意。

了解SRP并在可能的情况下应用它的结果通常是更简单的代码,但代价是更多的类/方法。这对于重用,测试和下一个程序员来说非常有价值。