2008-09-15 62 views
17

¿Qué es el Principio de Equivalencia de Reutilización/Exención y por qué es importante?El Principio de Equivalencia de Reutilización/Liberación (REP)

+4

Supongo que quieres la credencial de autoaprendizaje :-) – Mendelt

+1

Bueno, eso estaría bien. Pero la razón principal por la que hago esto (y hago las otras preguntas sobre los principios de diseño de OO) es ayudar a sembrar el sitio con información y, con suerte, aumentar el conocimiento de estos principios. Estoy constantemente sorprendido por la cantidad de desarrolladores que conozco que nunca han oído hablar de ellos. –

+0

De acuerdo, es suficiente. Eliminé mi respuesta reprendiéndote por ir a la lista. (Debería haber sido un comentario aquí de todos modos.) –

Respuesta

24

la reutilización/Liberación principio de equivalencia (REP) dice:

La unidad de reutilización es la unidad de liberación. La reutilización efectiva requiere el seguimiento de las liberaciones de un sistema de control de cambios. El paquete es la unidad efectiva de reutilización y liberación.

La unidad de reutilización es la unidad de la liberación

Código no debe ser reutilizado copiándola de una clase y pegándolo en otra. Si el autor original corrige cualquier error en el código o agrega alguna característica, no obtendrá automáticamente el beneficio. Deberá averiguar qué ha cambiado y luego modificar su copia. Tu código y el código original divergirán gradualmente.

En su lugar, el código debe reutilizarse incluyendo una biblioteca liberada en su código. El autor original conserva la responsabilidad de mantenerlo; ni siquiera deberías necesitar ver el código fuente.

reutilización efectiva requiere el seguimiento de las emisiones de un sistema de control de cambios

El autor de una biblioteca necesita identificar comunicados con números o nombres de algún tipo. Esto permite a los usuarios de la biblioteca identificar diferentes versiones. Esto requiere el uso de algún tipo de sistema de seguimiento de versiones.

El paquete es la unidad efectiva de reutilización y suelte

Podría ser posible utilizar una clase como unidad de reutilización y liberación, sin embargo, hay tantas clases en una aplicación típica, sería gravoso para el sistema de seguimiento de lanzamiento para realizar un seguimiento de todos ellos. Se requiere una entidad de mayor escala, y el paquete se adapta bien a esta necesidad.

Véase también el artículo de Robert Martin en Granularity.

+0

Por paquete, supongo que lo que quiere decir es * no * paquete Java o espacio de nombres C#, pero dll y jar. ¿Está bien? –

+0

Ese enlace a Granularity ya no funciona. ¿Está aquí https://pdfs.semanticscholar.org/53d0/8de266fb80355400d10f7ea77eea971d48f9.pdf? –

Cuestiones relacionadas