Ho passato molto tempo a leggere libri diversi su "buon design", "modelli di design", ecc. Sono un grande fan di SOLID approccio e ogni volta che ho bisogno di scrivere un semplice pezzo di codice, penso al futuro. Quindi, se l'implementazione di una nuova funzione o di una correzione di un bug richiede solo l'aggiunta di tre righe di codice come questa:
if(xxx) {
doSomething();
}
Non significa che lo farò in questo modo. Se penso che questo pezzo di codice probabilmente diventerà più grande nel prossimo futuro, penserò ad aggiungere astrazioni, a spostare questa funzionalità da qualche altra parte e così via. L'obiettivo che sto perseguendo è mantenere la complessità media come prima delle mie modifiche.
Credo che dal punto di vista del codice, sia piuttosto una buona idea - il mio codice non è mai abbastanza lungo, ed è abbastanza facile capire i significati per entità diverse, come classi, metodi e relazioni tra classi e oggetti.
Il problema è che ci vuole troppo tempo e spesso sento che sarebbe meglio se implementassi quella funzionalità "così com'è". Si tratta di "tre righe di codice" rispetto a "nuova interfaccia + due classi per implementare quell'interfaccia".
Dal punto di vista del prodotto (quando parliamo del risultato ), le cose che faccio sono abbastanza insensate. So che se lavoreremo alla prossima versione, avere un buon codice è davvero grandioso. Dall'altro lato, il tempo che hai speso per rendere "buono" il tuo codice potrebbe essere stato speso per implementare un paio di utili funzionalità.
Spesso mi sento molto insoddisfatto dei miei risultati - un buon codice che può solo fare A è peggio di un codice cattivo che può fare A, B, C e D.
È probabile che questo approccio porti a un guadagno netto positivo per un progetto software o è una perdita di tempo?