He heredado un proyecto en el que los diagramas de clase se parecen mucho a una tela de araña en un plato de espagueti. He escrito alrededor de 300 pruebas unitarias en los últimos dos meses para proporcionarme una red de seguridad que cubra el ejecutable principal.Legacy Code Nightmare
tengo a mi biblioteca de libros de desarrollo ágil a su alcance en cualquier momento dado:
- trabajo efectivo con el código heredado
- Refactoring
- código completo
- ágil Patrones y prácticas de principios en C#
- etc.
El problema es todo lo que toco parece romper algo más. Las clases de UI tienen lógica de negocios y código de base de datos mezclados. Existen dependencias mutuas entre varias clases. Hay un par de clases de dioses que se rompen cada vez que cambio alguna de las otras clases. También hay una clase de singleton/utilidad mutante con métodos de media instancia y medios métodos estáticos (aunque, irónicamente, los métodos estáticos se basan en la instancia y los métodos de instancia no).
Mis predecesores incluso pensaron que sería inteligente usar todos los conjuntos de datos al revés. Cada actualización de la base de datos se envía directamente al servidor de base de datos como parámetros en un procedimiento almacenado, luego los conjuntos de datos se actualizan manualmente para que la interfaz de usuario muestre los cambios más recientes.
A veces me tienta pensar que usaron alguna forma de ofuscación débil para la seguridad laboral o como último adiós antes de entregar el código.
¿Hay algún buen recurso para desenmarañar este lío? Los libros que tengo son útiles, pero solo parecen cubrir la mitad de los escenarios con los que me estoy cruzando.
¿Estás trabajando en mi antiguo lugar? ;) – geocoin