Dry

8
Análisis y Diseño de Software Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es Pensamiento de la semana- Programador Pragmático DRY –No te repitas (Don’t Repeat Yourself)

description

Programador pragmático. DRY.

Transcript of Dry

Page 1: Dry

Análisis y Diseño de Software

Departamento de Ingeniería de Sistemas Telemáticoshttp://moodle.dit.upm.es

Pensamiento de la semana- Programador PragmáticoDRY –No te repitas(Don’t Repeat Yourself)

Page 2: Dry

Programador Pragmático - DRY - No te repitas 2

DRY No te Repitas●No escribas dos veces lo

mismo

●Tendrás que revisar todo el código para cambiarlo

●y probablemente te olvides de cambiarlo en algún sitio

●Busca si tu código tiene fragmentos repetidos y quítalos (refactoriza)

Page 3: Dry

Programador Pragmático - DRY - No te repitas 3

Razones de la repetición

●Duplicación impuesta. El entorno parece imponer la duplicación

●Duplicación desapercibida. 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

Page 4: Dry

Programador Pragmático - DRY - No te repitas 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

Page 5: Dry

Programador Pragmático - DRY - No te repitas 5

Duplicación inadvertidapublic class Línea{

public Punto comienzo;

public Punto fin;

public double longitud;

}

Page 6: Dry

Programador Pragmático - DRY - No te repitas 6

Duplicación inadvertidapublic class Línea{

public Punto comienzo;

public Punto fin;

public double longitud() { return comienzo.distanciaA(fin);};

}

Page 7: Dry

Programador Pragmático - DRY - No te repitas 7

Duplicación inadvertidapublic 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; cambiado = true; } public double getLongitud() {

if (cambiado) {longitud = comienzo.distanciaA(fin);

cambiado = false; } return longitud; }}

De momento

¡¡NO TE PREOCUPES DE LAS EFICIENCIA!!

Page 8: Dry

Programador Pragmático - DRY - No te repitas 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