2009-11-09 6 views
7

Nie jestem pewien, czy się z tym zgadzam, więc chciałbym znaleźć ten artykuł w książce lub artykule, aby sprawdzić, czy dokładnie rozumiem, o czym mówią i jaki jest kontekst.Skąd pomysł, że obiekt powinien wykonywać tylko jedną rzecz?

Myślę, że rozumiem ten pomysł - chcę tylko poznać jego źródło, aby sprawdzić, skąd pochodzi ten pomysł.

dlaczego pytam:

Określenie „zrobić jedną rzecz” jest nieprecyzyjne i może oznaczać wiele rzeczy, w tym „tylko jedną metodę za klasę” (śmieszne) ... Myślę, że może to oznaczać Pojedyncza odpowiedzialność (np. wiele metod). Nie jest to również szczególnie przydatne, ponieważ musisz ocenić, kiedy jedna odpowiedzialność staje się wystarczająco skomplikowana, aby przeprojektować kilka obowiązków z jakąś delegacją ...

Odpowiedz

19

SOLIDne zasady od Bob Martin.

Single Responsibility Principle by być dokładnym.

Chociaż w pierwszej stronie rozdziału dotyczącego jednolitego Odpowiedzialności zasadzie stwierdza:

Zasada ta została opisana w pracach Tom DeMarco i Meilir page-Jones. Oni nazwali to spójnością.

Odniesienia za pracę wymienić:

  • Structured Analiza i Specyfikacja systemu, Tom DeMarco, Yourdon Prasa Computing Series, 1979
  • Practical Guide to Systems Strukturyzowanych projekt , 2d. Red., Meilir Page- Jones, Yourdon Prasa Computing Series, 1988

Inne źródła (z S.Lott w komentarzach) obejmują:

+5

Lista Martina to zbiór z wcześniej opublikowanych źródeł. –

+0

Zobacz także http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design). –

+0

Zobacz http://c2.com/cgi/wiki?AllocationOfResponsibility –

1

Zasada pojedynczej odpowiedzialności - aby uzyskać informacje na ten temat, należy zapoznać się z here.

1

Co zawsze źródło, nie sądzę, że jest to powszechny pomysł w OO. Obiekt może zrobić wiele rzeczy.

+0

Myślę, że ma znaczenie, skąd pochodzi. Nie chcę wersji chińskiego szeptu - chcę poznać dobrze zbadaną, oryginalną intencję za tym, co się powtarzam, więc mogę osiąść na świadomym osądzie, tak jak ludzie robią w prawdziwych dyscyplinach ;-) – daf

6

Człowiekiem, który wynalazł ideę modułowości oprogramowania, był dr David Parnas. Klasyczny papier to On the Criteria To Be Used in Decomposing Systems into Modules

Podczas gdy on nie mówi ogólnie o OO (jak jeszcze nie było w pobliżu), pomysły OO rozciągają się naturalnie z pracy dr Parnas. Częścią tej pracy jest analiza, w jaki sposób rozłożyć oprogramowanie na moduły, a moduły powinny mieć jeden cel.

+0

Dobra odpowiedź - ale nie do konkretne pytanie, które zadałem. ;-) – daf

+1

Cóż, uważam, że sam Parnas powiedział, że OO to tylko nowoczesna wersja jego koncepcji modułów. Tak więc ten prowadzi do drugiego :) –

0

Zasada pojedynczej odpowiedzialności (SRP) jest dość powszechna w świecie Java. Wymienione tutaj referencje są dobre.

Ta zasada może odnosić się zarówno do klas, jak i metod, ponieważ jest dobrym pomysłem dla obu.

Wyniki bycia świadomym SRP i stosowanie go w miarę możliwości są zwykle czystsze prostszy kod, ale kosztem więcej klas/metod. Może to mieć wielką wartość dla ponownego użycia, testowania i następnego programisty, aby to zobaczyć.

Powiązane problemy