2009-11-09 19 views
7

我不確定我是否同意這個觀點,所以我希望能找到這本書背後的書或期刊文章,以便我可以檢查我是否明白他們在說什麼,以及他們的意思。對象應該只做一件事的想法在哪裏?

我想我理解這個想法 - 我只是想知道源代碼,所以我可以檢查這個想法來自哪裏。

爲什麼我問:

術語「做一件事」是含糊不清,可能意味着很多事情,包括「只有每一個類的方法」(可笑)...我認爲這可能意味着單一責任(即多種方法)。它也不是特別有用,因爲您必須判斷何時單個責任變得足夠複雜,需要用某種委託來重構幾個責任...

回答

19

來自Bob Martin的SOLID原則。準確地說,是

Single Responsibility Principle

雖然,在對單一職責原則這一章的第一頁,他說:

這一原則在湯姆·德馬科和邁利爾·佩奇·瓊斯的工作描述。他們 稱它爲內聚力。

對於他提到工作的參考文獻:

  • 結構化分析和系統規範,湯姆·德馬科,Yourdon的出版社計算系列,1979
  • 的實用指南,以結構化系統設計 ,2d。編,Meilir頁面 - 瓊斯 ,Yourdon的出版社計算系列,(在評論來自美國洛特)1988年

其他來源包括:

+5

Martin的名單是從以前發表的文章收集而來。 – 2009-11-09 20:57:43

+0

另請參閱http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design)。 – 2009-11-09 20:58:55

+0

並參閱http://c2.com/cgi/wiki?AllocationOfResponsibility – 2009-11-09 20:59:29

1

單一責任原則 - 檢查here有關該主題的一些信息。

1

什麼是來源,我不認爲這是OO中的常見想法。 一個對象可能會做很多事情。

+0

我認爲它來自哪裏並不重要。我不想要中文Whisper版本 - 我想知道被重複研究的原始意圖,所以我可以像人們在真正的學科中一樣做出明智的判斷;-) – daf 2009-11-09 21:14:17

6

在軟件中發明模塊化思想的人是David Parnas博士。經典論文是On the Criteria To Be Used in Decomposing Systems into Modules

雖然他一般都沒有談論OO(因爲它還沒有出現),但OO的想法從Parnas博士的工作中自然延伸出來。這項工作的一部分是分析如何將軟件分解爲模塊,並且這些模塊應該是單一用途的。

+0

好的答案 - 但不是我問的具體問題。 ;-) – daf 2009-11-10 00:11:50

+1

那麼,我相信Parnas自己說OO只是他模塊概念的一個現代版本。所以那個導致另一個:) – 2009-11-10 14:38:05

0

單一責任原則(SRP)在Java世界中相當普遍。這裏提到的參考文獻很好。

該原理可以適用於類和方法,因爲它對兩者都是一個好主意。

知道SRP並在可能的情況下應用它的結果通常是更簡單的代碼,但代價是更多的類/方法。這對於重用,測試和下一個程序員來說是非常有價值的。

相關問題