1. Análisis y Diseño
de Software
Pensamiento de la semana-
Programador Pragmático
DRY –No te repitas
(Don’t Repeat Yourself)
Departamento de Ingeniería de Sistemas Telemáticos
http://moodle.dit.upm.es
2. DRY No te Repitas
●No escribas dos veces lo
mismo
●Tendrás que revisar todo el
código para cambiarlo
●yprobablemente te olvides
de cambiarlo en algún sitio
●Busca si tu código tiene
fragmentos repetidos y
quítalos (refactoriza)
Programador Pragmático - DRY - No te repitas 2
3. Razones de la repetición
●Duplicación impuesta. El entorno parece
imponer la duplicación
●Duplicacióndesapercibida. No te das cuenta
de que estás duplicando.
●Duplicación por impaciencia. Duplicar es más
rápido... (cortar y pegar)
●Duplicación entre desarrolladores.
Trabajando en grupo se duplica código entre
diferentes equipos
Programador Pragmático - DRY - No te repitas 3
4. Duplicación impuesta
● Misma información en diferentes formatos
● Comentarios del código iguales al código
● Si cambio el código, cambio el comentario
● Usa comentarios de alto nivel
● No leas el código, para eso lo mejor es un
código bien comentado
Programador Pragmático - DRY - No te repitas 4
5. Duplicación inadvertida
public class Línea{
public Punto comienzo;
public Punto fin;
public double longitud;
}
Programador Pragmático - DRY - No te repitas 5
6. Duplicación inadvertida
public class Línea{
public Punto comienzo;
public Punto fin;
public double longitud() { return comienzo.distanciaA(fin);};
}
Programador Pragmático - DRY - No te repitas 6
7. Duplicación inadvertida
public class Línea{
private Punto comienzo;
private Punto fin;
private double longitud; // duplicado pero por prestaciones
private cambiado = true; // cálculo vago
private setComienzo(Punto p){
comienzo = p; De momento
cambiado = true;
}
¡¡NO TE
public double getLongitud() {
if (cambiado) { PREOCUPES DE
longitud = comienzo.distanciaA(fin); LAS EFICIENCIA!!
cambiado = false;
}
return longitud;
}
}
Programador Pragmático - DRY - No te repitas 7
8. DRY
●Intenta
que si algo cambia, sólo tengas
que cambiarlo en un sitio
●Busca patrones visuales de
comprobaciones, estructuras... que se
repiten y ¡quítalos!
– Métodos booleanos
– Métodos auxiliares
– Mira si la estructura del programa es correcta
– Uso de un valor dos veces constante
Programador Pragmático - DRY - No te repitas 8