He pasado mucho tiempo leyendo diferentes libros sobre "buen diseño", "patrones de diseño", etc. Soy un gran admirador del enfoque SÓLIDO y cada vez que necesito escribir un código simple, pienso en el futuro. Entonces, si la implementación de una nueva función o una corrección de errores solo requiere agregar tres líneas de código como esta:
if(xxx) {
doSomething();
}
No significa que lo haga de esta manera. Si siento que es probable que este código se vuelva más grande en el futuro cercano, pensaré en agregar abstracciones, mover esta funcionalidad a otro lugar, etc. El objetivo que persigo es mantener la complejidad promedio igual que antes de mis cambios.
Creo que, desde el punto de vista del código, es una buena idea: mi código nunca es lo suficientemente largo y es bastante fácil entender los significados de diferentes entidades, como clases, métodos y relaciones entre clases y objetos.
El problema es que lleva demasiado tiempo, y a menudo siento que sería mejor si simplemente implementara esa característica "tal cual". Se trata de "tres líneas de código" versus "nueva interfaz + dos clases para implementar esa interfaz".
Desde el punto de vista del producto (cuando hablamos del resultado ), las cosas que hago no tienen sentido. Sé que si vamos a trabajar en la próxima versión, tener un buen código es realmente genial. Pero, por otro lado, el tiempo que ha dedicado a hacer que su código sea "bueno" puede haberse dedicado a implementar un par de funciones útiles.
A menudo me siento muy insatisfecho con mis resultados: un código bueno que solo puede hacer A es peor que un código malo que puede hacer A, B, C y D.
¿Es probable que este enfoque genere una ganancia neta positiva para un proyecto de software, o es una pérdida de tiempo?