He pasado mucho tiempo leyendo diferentes libros sobre "buen diseño", "patrones de diseño", etc. Soy un gran fan de SOLID y cada vez que necesito escribir un simple fragmento de código, pienso en el futuro. Por lo tanto, si la implementación de una nueva característica o una corrección de errores requiere solo agregar tres líneas de código como esta:
if(xxx) {
doSomething();
}
No significa que lo haré de esta manera. Si siento que es probable que esta pieza de código se haga más grande en el futuro más cercano, pensaré en agregar abstracciones, mover esta funcionalidad a otro lugar y así sucesivamente. El objetivo que persigo es mantener la complejidad promedio igual a la que tenía 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 de entender los significados de diferentes entidades, como clases, métodos y relaciones entre clases y objetos.
El problema es que toma mucho tiempo y, a menudo, creo que sería mejor si solo implementara esa característica "tal como está". Se trata de "tres líneas de código" frente a "nueva interfaz + dos clases para implementar esa interfaz".
Desde el punto de vista de un producto (cuando hablamos del resultado ), las cosas que hago no tienen ningún 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 empleado en la implementación de algunas características ú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 resulte en una ganancia neta positiva para un proyecto de software, o es una pérdida de tiempo?