EXPIANDO MI CÓDIGO LEGACY
@yamitcar
Software Crafter
Software Crafter
Lead Engineer at Dripsend
¿Y quién es el culpable de esté desastre?
¡¡¡YO!!!
A wareness
D esire
K nowledge
A bility
R enforcement
Awareness
Efecto mariposa
...En un sistema dinámico caótico, cualquier pequeña variación acabará dando lugar a situaciones impredecibles...
En otras palabras....
Yo no toco eso ni por el putas, por que ¡¡quién sabe que rompo!!
Todos sabemos lo que es, código...
- Difícil de entender
- Difícil de cambiar
- Difícil cazar los bugs
- Difícil de arreglar
- Difícil de saber si quedo bien
y aun así, a nadie parece importarle ...
El sindrome de la ventana rota
Nos llena de malos hábitos
- Desinterés
- Descuido
- Cambios de ultimo momento
Incluso los romantizamos....
Costo del cambio
Desire
¿Y dónde están los genios?
-
No tenemos tiempo de...
-
Nos volvemos victimas del mal código
-
Nos da una excusa
-
Nos da confort
¿La vida real?
No sólo software que funciona, sino también software bien diseñado.
No sólo responder al cambio, sino también agregar valor constantemente.
No sólo individuos e interacciones, sino también una comunidad de profesionales.
No sólo colaboración de clientes, sino también asociaciones productivas.
Es decir, en la búsqueda de los elementos de la izquierda, hemos encontrado indispensables los elementos de la derecha.
Knowledge
¿Dificultades para testearlo?
- Estructuras in-accesibles
- Múltiples responsabilidades
- Static/Global
- Métodos que no se pueden sobre-escribir
- Código espagueti
- .....
Test it
Refactor it
¿Y como lo enfrento?
- Dejar de cavar - ¡No sirve agregar mal código al mal código!
- Trabajar en pequeños pasos -¿ lo mejor es volverlo a construir de cero?
- "refactoring to test"
Controlar
- Los argumentos del método
- Los estados de los objetos
- El estado del sistema cuando se ejecuta
El código testeable, tiene pocos elementos a ser controlados.
Observar
- El valor de retorno del método
- El estado del objeto, si el método lo altera.
- Efectos colaterales
- Interacción con otros objetos
El código testeable es el que se puede observar y controlar
¡El equipo es la clave!
- Developer Sign-off
- Lunch and learn
- Big visible chart
- Presupuesto de refactor
Bueno... el equipo y la técnica.
Ability
CodeCrap: https://bit.ly/3eMl3SO
public boolean isNegative(int i) {
String s = Integer.parseInt(i);
return s.startsWith("-");
}
---------------------------------------------------------------------
if(($_COOKIE["Desktop"] == '1' OR $HTTP_COOKIE_VARS["Desktop"] =='1'))
{
$desktop = 1;
}
else
{
$desktop = 1;
}
Universal legacy steps
Formatea el código
al estándar...
(cualquiera que sea)
Eliminar el ruido
Useless Comments
TODO's from the ancients
Commented out code
Unused privates
Unreachable branches
if(true)
Haz tu código testeable
¡se creativo e impecable!
Refactoring to test
Extract and override
Extrae el problema en un método aislado
Sobre escribe el método en una clase derivada
Prueba la clase derivada
El problema
RiskAssessor hace todas sus operaciones contra la BD.
Queremos modificar el comportamiento de
totalCapital.multiply()
Extract
Override
Test
Antes
Después
Reinforcement
Seguir aprendiendo
https://www.cyber-dojo.org/
Refactoring with PSQL https://bit.ly/3eWCX5q
Software crasftmanship comunities
¡ Gracias !
Expiando mi legacy code
By Yamit Cardenas M
Expiando mi legacy code
- 3,168