2009-05-29 13 views
11

Robert C. Martin en uno de sus libros menciona la viscosidad como un síntoma del diseño de descomposición. No entiendo completamente la idea de la viscosidad en el desarrollo de software. ¿Podría darme algunos ejemplos?Diseño de putrefacción y viscosidad

Respuesta

11

Tiene dos usos, la viscosidad del diseño y la viscosidad del medio ambiente.

En primer lugar, los fluidos con alta viscosidad, como la pasta de dientes y la mantequilla de maní, no fluyen tan suavemente como fluidos de baja viscosidad como el agua.

El diseño de alta viscosidad hace que sea más fácil crear un hack que preservar el diseño. El truco hace que el código sea aún más rígido, aumentando aún más la viscosidad.

La viscosidad del entorno se refiere al flujo de trabajo. Si los tiempos de compilación son largos, o es complicado construir el sistema o ejecutar las pruebas, los programadores tomarán atajos para aliviar el dolor.

13

A medida que el código se hace más viejo, se vuelve más lleno de piratas informáticos, y está más lleno de dependencias, y en consecuencia se vuelve más difícil de cambiar sin romper algo.

Por lo tanto, se vuelve menos "fluido" y más "sólido", de ahí la analogía con la viscosidad.

3

La viscosidad es la capacidad de un líquido para resistir los cambios de las fuerzas externas. El agua es la base de la medida y tiene una viscosidad muy baja (es decir, fluirá libremente de un lugar a otro dado un camino), mientras que, por ejemplo, el yogur que tiene una viscosidad tan alta cuando está frío que es casi sólido y bonito queda mucho donde lo pones (a menos que estés usando pantalones de color claro, en cuyo caso siempre encuentra su camino allí ...).

En software, esto se traduce en cuánto resiste su código. Si tiene muchas dependencias, entonces puede ser difícil alterar una clase principal, lo que lleva a soluciones alternativas menos que ideales, que a su vez aumentan la resistencia del código (aumentando su viscosidad). El código bien diseñado (baja viscosidad) se puede actualizar y agregar sin tener un impacto importante en las aplicaciones u otras clases que dependen de él.

Cuestiones relacionadas