Técnicas de Refactoring (II)
Antes de comenzar a explicar algunas de las técnicas de Refactoring voy a explicarte una cuestión teórica sencilla, corta e interesante.
Metáfora de los dos sombreros:
Cuando se usa el refactoring para desarrollar software, dividimos el tiempo en 2 actividades: agregar funcionalidad y refactorizarla. Cuando agregamos una funcionalidad, nos ponemos el sombrero de “Nuevo Código“, escribimos nuestra función pero no debemos realizar ningún cambio de código, solo estamos agregando nuevas funcionalidades. Luego podemos armar nuestro escenario de test, llevarlo a cabo y comprobar está funcionando sin problemas. Cuando refactorizamos, tomamos el sombrero de “Refactorización” y no agregamos ninguna funcionalidad, solo reestructuramos código. Tampoco hacemos ningún test.
Desarrollar software implica cambiar de sombreros constantemente. Primero usamos el sombrero de “Nuevo Código“, escribimos nuestra función, pero nos damos cuenta que se puede mejorar su escritura, su entendimiento si cambiamos o reorganizamos el código. En ese momento cambiamos el sombrero por el de “Refactorización“. Este ciclo se repite indefinidamente, donde lo mas importante es saber que sombrero tenemos puesto.
Técnicas de Refactoring: Bad Smells
Código Duplicado:
Este es el primer problema que se encuentra en cualquier programa y realizado por cualquier programador (que no sepa de refactoring). Si encontramos el mismo código repetido en mas de un lugar, podemos estar seguros que el programa puede mejorar (a veces la mejora no se debe a rendimiento, sino a un entendimiento de que se quiso realizar en el código) si los unificamos.
Problema 1: tenemos la misma expresión en dos métodos de la misma clase.
Solución: Se utiliza la técnica Extract Method.
Problema 2: tenemos la misma expresión en clases que heredan del mismo padre.
Solución: Se utiliza la técnica Extract Method en ambas clases y luego Pull Up Field. Si el código es similar pero no igual, se utiliza Extract Method para separar los fragmentos que coinciden de los que no. Luego se puede utilizar Form Template Method. Si los metodos realizan la misma tarea pero con algoritmos diferentes se puede intentar usar Substitute Algorithm eligiendo el mas claro de los dos.
Problema 3: tenemos código repetido en dos clases que no están relacionadas.
Solución: se podría considerar usar Extract Class en una clase y luego usar el nuevo componente en la otra clase.
Esto ha sido todo del Tutorial: Que son las técnicas de Refactoring en Español (II).
Artículos Relacionados:




2 comentarios
5 pings
Dalila
01/09/2012, a las 18:06 (UTC -3) Enlace a este comentario
Excelente aporte sef1ores me paerce genial que los conocimientos no se queden estancados solo en la mente de pocos y no se compartan con muchos de sus colegas sobre todo para mi que me estoy graduando de Ing. en Geociencias. Muchas gracias desde Venezuela y sigan asi!!!
Emmanuel
05/01/2013, a las 13:32 (UTC -3) Enlace a este comentario
Gracias por tus palabras!
Técnica de Refactoring: Extract Method » Sur Patterns Community
18/03/2012, a las 12:18 (UTC -3) Enlace a este comentario
[...] « Que son las tecnicas de Refactoring en Español (II) [...]
Técnica de Refactoring: Pull Up Field » Sur Patterns Community
19/03/2012, a las 0:09 (UTC -3) Enlace a este comentario
[...] 19/03/2012 Warning! Si quieres saber cómo, cuando y donde aplicar esta técnica por favor visita: que son las tecnicas de refactoring en espanol II [...]
Técnica de Refactoring: Extract Class » Sur Patterns Community
19/03/2012, a las 0:48 (UTC -3) Enlace a este comentario
[...] 19/03/2012 Warning! Si quieres saber cómo, cuando y donde aplicar esta técnica por favor visita: que son las tecnicas de refactoring en espanol II [...]
Técnica de Refactoring en Español: Extract Class » Sur Patterns
31/03/2012, a las 8:45 (UTC -3) Enlace a este comentario
[...] 19/03/2012 Warning! Si quieres saber cómo, cuando y donde aplicar esta técnica por favor visita: que son las tecnicas de refactoring en espanol II [...]
Tutorial: Que son las técnicas de Refactoring en Español (I) » Sur Patterns | Sur Patterns
02/04/2012, a las 19:39 (UTC -3) Enlace a este comentario
[...] Tutorial: Que son las técnicas de Refactoring en Español (II) [...]