Charla de Iker (540) en el Open Space 10 aniversario de Biko. Cómo trabajar con código legado
Después de leernos el libro “Working effectively with legacy code” explicaremos algunos ejemplos chulos que explican en el libro sobre como trabajar con código legado, introducir testing y limpiar el código. Teórica y también práctica ya que entraremos a ver ejemplos en código.
16. 1. Hay que planificar los cambios con mucho cuidado.
2. Entender el código que estamos modificando.
3. Empezar a realizar cambios.
4. Comprobar que TODO sigue funcionando.
5. Y repetir 3 o 4 veces todo hasta que sabemos que funciona.
EDIT & PRAY
17. • Trabajar con feedback.
• Escribir tests para describir el
comportamiento.
• Preparar código para TDD (Refactoring).
• TDD.
COVER AND MODIFY
18. 1. Identificar puntos de cambio
2. Encontrar puntos donde se puede añadir tests
3. Romper dependencias
4. Escribir tests
5. Hacer cambio/añadir feature y refactor
PASO A PASO
19. Depende del objetivo del desarrollo.
Pitch point.
Tests de caracterización.
¿CÓMO EMPEZAR?
21. ● Detección: Para detectar identificar valores que
computa nuestro código y a los que no podemos
acceder.
● Separación: Para poder introducir tests a una parte del
código que está acoplado.
¿POR QUÉ ROMPER DEPENDENCIAS?
24. La clase no puede ser instanciada en un entorno de test.
Hay una dependencia que es difícil de mockear o falsear.
No hay un punto de corte donde una dependencia
complicada pueda ser sustituida por un mock o fake.
PROBLEMAS QUE PODEMOS ENCONTRAR
25. Break Out Method Object
Expose Static Method
Parameterize Constructor
Pull up feature
Adapt Parameter
Extract Implementer
Extract Interface
Extract and Override Call
TÉCNICAS
Extract and Override Factory Method
Introduce Instance Delegator
Introduce Static Setter
Parameterize Constructor
Parameterize Method
Replace Global Reference with Getter
Supersede Instance Variable
Subclass and Override Method
42. Dividir responsabilidades.
Buscar métodos agrupados.
Buscar métodos ocultos.
Buscar acciones se pueden cambiar al mismo tiempo.
Buscar relaciones internas.
Buscar las responsabilidades de la clase.
Hacer scratch refactoring.
Centrarse en el trabajo actual.
MY CLASS IS TOO BIG