SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
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
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
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
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
Duplicación inadvertida
public class Línea{
  public Punto comienzo;
  public Punto fin;
  public double longitud;
}




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

Más contenido relacionado

La actualidad más candente

Proposiciones y bloques de código
Proposiciones y bloques de códigoProposiciones y bloques de código
Proposiciones y bloques de códigoDenisse C
 
Presentación pseudocódigo
Presentación pseudocódigoPresentación pseudocódigo
Presentación pseudocódigoStudent
 
T programación1
T programación1T programación1
T programación1Robi22
 
Pasos para la solución de un problema por computador
Pasos para la solución de un problema por computadorPasos para la solución de un problema por computador
Pasos para la solución de un problema por computadoreduardzavala93
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigojesduq
 
Trabajo de thali infor
Trabajo de thali inforTrabajo de thali infor
Trabajo de thali inforThalia Diaz
 
Practica camina pared
Practica camina paredPractica camina pared
Practica camina paredmaparente9
 
Pseudocodigo
PseudocodigoPseudocodigo
PseudocodigoTensor
 
Presentacion PseudocóDigo
Presentacion PseudocóDigoPresentacion PseudocóDigo
Presentacion PseudocóDigoMarco Antonio
 

La actualidad más candente (16)

algoritmo
algoritmoalgoritmo
algoritmo
 
Proposiciones y bloques de código
Proposiciones y bloques de códigoProposiciones y bloques de código
Proposiciones y bloques de código
 
Diagrama Flujo
Diagrama FlujoDiagrama Flujo
Diagrama Flujo
 
Presentación pseudocódigo
Presentación pseudocódigoPresentación pseudocódigo
Presentación pseudocódigo
 
Tarea 4
Tarea 4Tarea 4
Tarea 4
 
Unmsm05 2008
Unmsm05 2008Unmsm05 2008
Unmsm05 2008
 
T programación1
T programación1T programación1
T programación1
 
Pasos para la solución de un problema por computador
Pasos para la solución de un problema por computadorPasos para la solución de un problema por computador
Pasos para la solución de un problema por computador
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Trabajo de thali infor
Trabajo de thali inforTrabajo de thali infor
Trabajo de thali infor
 
Practica camina pared
Practica camina paredPractica camina pared
Practica camina pared
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Presentacion PseudocóDigo
Presentacion PseudocóDigoPresentacion PseudocóDigo
Presentacion PseudocóDigo
 
Solucion Del Parcial Blog
Solucion Del Parcial BlogSolucion Del Parcial Blog
Solucion Del Parcial Blog
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Algoritmo utilizando pseudolenguaje
Algoritmo utilizando pseudolenguajeAlgoritmo utilizando pseudolenguaje
Algoritmo utilizando pseudolenguaje
 

Destacado

The invasion of the starlings - Javier de la Torre
The invasion of the starlings - Javier de la TorreThe invasion of the starlings - Javier de la Torre
The invasion of the starlings - Javier de la TorreJavier de la Torre
 
Curso de formación en Movilidad (Parte II) - Personalización
Curso de formación en Movilidad (Parte II) - Personalización Curso de formación en Movilidad (Parte II) - Personalización
Curso de formación en Movilidad (Parte II) - Personalización Mobivery
 
Mapas, dragones y teletransporte
Mapas, dragones y teletransporteMapas, dragones y teletransporte
Mapas, dragones y teletransporteAdigital
 
Curso de formación en Movilidad (Parte III) - Tecnología de Servidor
Curso de formación en Movilidad (Parte III) - Tecnología de ServidorCurso de formación en Movilidad (Parte III) - Tecnología de Servidor
Curso de formación en Movilidad (Parte III) - Tecnología de ServidorMobivery
 
GIS Libre y Datos Abiertos como base tecnológica en iniciativas de cambio social
GIS Libre y Datos Abiertos como base tecnológica en iniciativas de cambio socialGIS Libre y Datos Abiertos como base tecnológica en iniciativas de cambio social
GIS Libre y Datos Abiertos como base tecnológica en iniciativas de cambio socialJavier Sánchez
 
Open Data: Modelos de negocio basados en datos del sector público
Open Data: Modelos de negocio basados en datos del sector públicoOpen Data: Modelos de negocio basados en datos del sector público
Open Data: Modelos de negocio basados en datos del sector públicoJose Luis Marín de la Iglesia
 
Open Analytics 2014 - Daniele grasso - Herramientas Open Source en periodismo...
Open Analytics 2014 - Daniele grasso - Herramientas Open Source en periodismo...Open Analytics 2014 - Daniele grasso - Herramientas Open Source en periodismo...
Open Analytics 2014 - Daniele grasso - Herramientas Open Source en periodismo...OpenAnalytics Spain
 
CartoDB: Mapeando el mundo con Open Source
CartoDB: Mapeando el mundo con Open SourceCartoDB: Mapeando el mundo con Open Source
CartoDB: Mapeando el mundo con Open SourceLibreCon
 

Destacado (8)

The invasion of the starlings - Javier de la Torre
The invasion of the starlings - Javier de la TorreThe invasion of the starlings - Javier de la Torre
The invasion of the starlings - Javier de la Torre
 
Curso de formación en Movilidad (Parte II) - Personalización
Curso de formación en Movilidad (Parte II) - Personalización Curso de formación en Movilidad (Parte II) - Personalización
Curso de formación en Movilidad (Parte II) - Personalización
 
Mapas, dragones y teletransporte
Mapas, dragones y teletransporteMapas, dragones y teletransporte
Mapas, dragones y teletransporte
 
Curso de formación en Movilidad (Parte III) - Tecnología de Servidor
Curso de formación en Movilidad (Parte III) - Tecnología de ServidorCurso de formación en Movilidad (Parte III) - Tecnología de Servidor
Curso de formación en Movilidad (Parte III) - Tecnología de Servidor
 
GIS Libre y Datos Abiertos como base tecnológica en iniciativas de cambio social
GIS Libre y Datos Abiertos como base tecnológica en iniciativas de cambio socialGIS Libre y Datos Abiertos como base tecnológica en iniciativas de cambio social
GIS Libre y Datos Abiertos como base tecnológica en iniciativas de cambio social
 
Open Data: Modelos de negocio basados en datos del sector público
Open Data: Modelos de negocio basados en datos del sector públicoOpen Data: Modelos de negocio basados en datos del sector público
Open Data: Modelos de negocio basados en datos del sector público
 
Open Analytics 2014 - Daniele grasso - Herramientas Open Source en periodismo...
Open Analytics 2014 - Daniele grasso - Herramientas Open Source en periodismo...Open Analytics 2014 - Daniele grasso - Herramientas Open Source en periodismo...
Open Analytics 2014 - Daniele grasso - Herramientas Open Source en periodismo...
 
CartoDB: Mapeando el mundo con Open Source
CartoDB: Mapeando el mundo con Open SourceCartoDB: Mapeando el mundo con Open Source
CartoDB: Mapeando el mundo con Open Source
 

Similar a Análisis y Diseño de Software - DRY No te Repitas

Programacion RPG: Conceptos ILE
Programacion RPG: Conceptos ILEProgramacion RPG: Conceptos ILE
Programacion RPG: Conceptos ILEGiovanny Guillen
 
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Iván López Martín
 
Taller de Introducción a Scripting con gvSIG
Taller de Introducción a Scripting con gvSIGTaller de Introducción a Scripting con gvSIG
Taller de Introducción a Scripting con gvSIGÓscar Martínez Olmos
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweekCarlos Ble
 
Practicas bloque 1
Practicas bloque 1Practicas bloque 1
Practicas bloque 1Arana Paker
 
Giseproi curso de programación - sesión 8 - ejemplo de creacion de un programa
Giseproi   curso de programación - sesión 8 - ejemplo de creacion de un programaGiseproi   curso de programación - sesión 8 - ejemplo de creacion de un programa
Giseproi curso de programación - sesión 8 - ejemplo de creacion de un programagiseproi
 
Curso de C++ (2014)
Curso de C++ (2014)Curso de C++ (2014)
Curso de C++ (2014)Miriam Ruiz
 
Reducción de ifs en JavaScript con Programación Orientada a Prototipos
Reducción de ifs en JavaScript con Programación Orientada a PrototiposReducción de ifs en JavaScript con Programación Orientada a Prototipos
Reducción de ifs en JavaScript con Programación Orientada a PrototiposDiego Sánchez
 
Metodología de la programación
Metodología de la programaciónMetodología de la programación
Metodología de la programaciónAnsd
 
Taller de procesos de software
Taller de procesos de softwareTaller de procesos de software
Taller de procesos de softwaremilo9876
 
GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29Jorge Hidalgo
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...Miguel Ángel Sánchez Chordi
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglosUVM
 
Scripting para Mikrotik - Presentación Nunsys en MUM
Scripting para Mikrotik - Presentación Nunsys en MUMScripting para Mikrotik - Presentación Nunsys en MUM
Scripting para Mikrotik - Presentación Nunsys en MUMNunsys S.L.
 
Python_Introduccion_a_la_programacion.pptx
Python_Introduccion_a_la_programacion.pptxPython_Introduccion_a_la_programacion.pptx
Python_Introduccion_a_la_programacion.pptxFedericoMartearena
 

Similar a Análisis y Diseño de Software - DRY No te Repitas (20)

Programacion RPG: Conceptos ILE
Programacion RPG: Conceptos ILEProgramacion RPG: Conceptos ILE
Programacion RPG: Conceptos ILE
 
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
 
Pseudocodigo.ppt
Pseudocodigo.pptPseudocodigo.ppt
Pseudocodigo.ppt
 
Taller de Introducción a Scripting con gvSIG
Taller de Introducción a Scripting con gvSIGTaller de Introducción a Scripting con gvSIG
Taller de Introducción a Scripting con gvSIG
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
Programación con java en Eclipse
Programación con java en EclipseProgramación con java en Eclipse
Programación con java en Eclipse
 
Practicas bloque 1
Practicas bloque 1Practicas bloque 1
Practicas bloque 1
 
Giseproi curso de programación - sesión 8 - ejemplo de creacion de un programa
Giseproi   curso de programación - sesión 8 - ejemplo de creacion de un programaGiseproi   curso de programación - sesión 8 - ejemplo de creacion de un programa
Giseproi curso de programación - sesión 8 - ejemplo de creacion de un programa
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Curso de C++ (2014)
Curso de C++ (2014)Curso de C++ (2014)
Curso de C++ (2014)
 
Reducción de ifs en JavaScript con Programación Orientada a Prototipos
Reducción de ifs en JavaScript con Programación Orientada a PrototiposReducción de ifs en JavaScript con Programación Orientada a Prototipos
Reducción de ifs en JavaScript con Programación Orientada a Prototipos
 
Daniel carrera 2
Daniel carrera 2Daniel carrera 2
Daniel carrera 2
 
Metodología de la programación
Metodología de la programaciónMetodología de la programación
Metodología de la programación
 
Taller de procesos de software
Taller de procesos de softwareTaller de procesos de software
Taller de procesos de software
 
GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglos
 
Scripting para Mikrotik - Presentación Nunsys en MUM
Scripting para Mikrotik - Presentación Nunsys en MUMScripting para Mikrotik - Presentación Nunsys en MUM
Scripting para Mikrotik - Presentación Nunsys en MUM
 
Python_Introduccion_a_la_programacion.pptx
Python_Introduccion_a_la_programacion.pptxPython_Introduccion_a_la_programacion.pptx
Python_Introduccion_a_la_programacion.pptx
 
Visual 3
Visual 3Visual 3
Visual 3
 

Más de Carlos A. Iglesias (20)

GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción HTML
Introducción HTMLIntroducción HTML
Introducción HTML
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
UPM GSI Presentation
UPM GSI PresentationUPM GSI Presentation
UPM GSI Presentation
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
1 intro php
1 intro php1 intro php
1 intro php
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Introducción TEWC
Introducción TEWCIntroducción TEWC
Introducción TEWC
 
Tema 4.1 Introduccion Android
Tema 4.1 Introduccion AndroidTema 4.1 Introduccion Android
Tema 4.1 Introduccion Android
 
Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Tema 4.4 Actividades
Tema 4.4 ActividadesTema 4.4 Actividades
Tema 4.4 Actividades
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Tema 4.6 Intenciones
Tema 4.6 IntencionesTema 4.6 Intenciones
Tema 4.6 Intenciones
 
Tema 4.7 Acceso a datos
Tema 4.7 Acceso a datosTema 4.7 Acceso a datos
Tema 4.7 Acceso a datos
 

Último

GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 

Último (20)

GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 

Análisis y Diseño de Software - DRY No te Repitas

  • 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