
Seco, húmedo, caliente, frío. Son sólo palabras, ¿verdad? Estoy aquí para decirte que pueden ser más.

La mayoría de los programadores, si no todos, habrán oído hablar de los términos DRY (seco) y WET (húmedo) en relación con el código. Pero, primero declaremos lo que significan estos acrónimos para que nadie esté mal informado.
DRY – Don’t Repeat Yourself
WET – Write Everything Twice
Tómese un segundo para reflexionar… ¿qué acrónimo suena como que podría ser la mejor práctica de codificación? Si tu intuición te empuja hacia DRY, estarías en lo cierto. Bueno, el 90% de las veces.
Como programador, esforzarse por mantener su código DRY, por lo tanto, no repetir su código, es generalmente la mejor práctica. Pero hay veces en las que tener un poco de humedad añadida a su código puede hacer su vida un poco más fácil.
Primero echemos un vistazo a un ejemplo de cada uno.
Aquí está el aspecto de un código WET: (usando Ruby)
class John
def build(n)
n + 1
end def destroy(n)
n - 1
end
end class Peter
def build(n)
n + 1
end
end
¿Detectaste los puntos de Write Everything Twice?
En este caso, ambas clases, John & Peter, tienen la capacidad de usar el método build. Sin embargo, si en el futuro hubiera que hacer un cambio en el método de construcción, habría que hacerlo dos veces, en cada punto en el que se utilice el método de construcción.
Por otro lado, si el código fuera DRY, sólo tendríamos que hacer ese cambio una vez. En este caso, el uso de un módulo podría ayudar a mantener nuestro código DRY:
module Builder
def build(n)
n + 1
end
endclass John
include Builder def destroy(n)
n - 1
end
endclass Peter
include Builder
end
El uso de un módulo permite a ambas clases la capacidad de construir. Y, por supuesto, John sigue manteniendo su método destroy.
Mantener tu código base DRY es más útil en lugares donde prevés que los cambios se produzcan con bastante frecuencia. Tener código DRY significa que sólo necesitas hacer esos cambios en una, o en unas pocas áreas, en lugar de en todos los lugares donde ese código puede ser utilizado.
Quizás lo más importante es que tener código DRY reduce tu posibilidad de error. Imagina que hay que hacer un cambio en un código idéntico en cinco puntos diferentes, pero te olvidas de cambiar el código en uno de esos puntos… ¿Ves el problema? O bien su programa se bloqueará, o quizás incluso peor, utilizará un procedimiento obsoleto mientras parece normal.
Dicho esto, el código WET tiene sus méritos. Si usted anticipa que el código idéntico se bifurca en diferentes direcciones más adelante, tener código WET puede hacer que el cambio futuro sea más fácil.
Además, el código excesivamente DRY puede crear dolor de cabeza al siguiente programador que utiliza su código, que puede incluirse a sí mismo. Esto puede derivar de hacer una cantidad tediosa de saltos lógicos con el fin de averiguar los factores en juego en una línea de código en particular.
Dicho esto, como regla general, mantenga su código DRY amigos. El tú del mañana lo agradecerá.