2009-11-09 7 views
7

No estoy seguro de estar de acuerdo, así que me gustaría encontrar el libro o el artículo de la revista detrás de esta idea para poder verificar que entiendo exactamente lo que dicen y qué contexto significan.¿De dónde viene la idea de que un objeto solo debería hacer una cosa?

Creo que entiendo la idea, solo quiero saber la fuente para poder verificar de dónde viene la idea.

eso que estoy pidiendo:

El término "hacer una cosa" es vago y podría significar un montón de cosas, incluyendo "sólo tienen un método por clase" (ridículo) ... Creo que podría significar una responsabilidad única (es decir, muchos métodos). Tampoco es particularmente útil porque debe juzgar cuándo una sola responsabilidad se vuelve lo suficientemente complicada como para necesitar refactorizarse en varias responsabilidades con algún tipo de delegación ...

Respuesta

19

Principios SÓLIDOS de Bob Martin.

Single Responsibility Principle para ser exactos.

Aunque, en la primera página del capítulo sobre el Principio de Responsabilidad Individual, afirma:

Este principio se describe en la obra de Tom DeMarco y Meilir Page-Jones. Ellos lo llamaron cohesión.

Las referencias para el trabajo que se menciona son:

  • estructurado sistema de análisis y especificación, Tom DeMarco, Yourdon Press Serie Computing, 1979
  • La Guía Práctica de los sistemas estructurados Diseño , 2d. Ed., Meilir Page- Jones, Yourdon Press Serie Computing, 1988

Otras fuentes (de S. Lott en los comentarios) incluyen:

+5

La lista de Martin es una colección de fuentes publicadas anteriormente. –

+0

Ver también http://en.wikipedia.org/wiki/GRASP_(Object_Oriented_Design). –

+0

Y vea http://c2.com/cgi/wiki?AllocationOfResponsibility –

1

Principio de responsabilidad única - Consulte here para obtener más información sobre el tema.

1

Cualquiera que sea la fuente, no creo que sea una idea común en OO. Un objeto puede hacer muchas cosas.

+0

Creo que importa de dónde viene. No quiero la versión del susurro chino: quiero conocer la intención original bien documentada detrás de lo que se repite para poder establecer un juicio informado tal como lo hacen las personas en disciplinas reales ;-) – daf

6

El hombre que inventó la idea de la modularidad en el software fue el Dr. David Parnas. El documento clásico es On the Criteria To Be Used in Decomposing Systems into Modules

Si bien no habla de OO en general (ya que aún no existía), las ideas de OO se extienden naturalmente del trabajo del Dr. Parnas. Y parte de este trabajo es el análisis sobre cómo descomponer su software en módulos, y que los módulos deben ser de un solo propósito.

+0

Buena respuesta, pero no para la pregunta específica que hice. ;-) – daf

+1

Bueno, creo que el propio Parnas dijo que OO es solo una versión moderna de su concepto de módulos. Entonces uno lleva al otro :) –

0

El Principio de Responsabilidad Individual (SRP) es bastante común en el mundo de Java. Las referencias mencionadas aquí son buenas.

El principio se puede aplicar tanto a las clases como a los métodos porque es una buena idea para ambos.

Los resultados de conocer el SRP y aplicarlo cuando sea posible suelen ser códigos más simples, pero a costa de más clases/métodos. Esto puede ser de gran valor para la reutilización, las pruebas y el próximo programador para verlo.

Cuestiones relacionadas