Ho trascorso molto tempo a leggere diversi libri su "buon design", "modelli di design", ecc. Sono un grande fan dell'approccio SOLID e ogni volta che devo scrivere un semplice codice, penso a il futuro. Quindi, se l'implementazione di una nuova funzionalità o una correzione di bug richiede solo l'aggiunta di tre righe di codice come questa:
if(xxx) {
doSomething();
}
Ciò non significa che lo farò in questo modo. Se penso che questo pezzo di codice possa diventare più grande nel prossimo futuro, penserò di aggiungere astrazioni, spostare questa funzionalità altrove e così via. L'obiettivo che sto perseguendo è mantenere la complessità media come prima dei miei cambiamenti.
Credo che dal punto di vista del codice sia una buona idea - il mio codice non è mai abbastanza lungo ed è abbastanza facile capire i significati di diverse entità, come classi, metodi e relazioni tra classi e oggetti.
Il problema è che ci vuole troppo tempo e spesso sento che sarebbe meglio se avessi implementato quella funzione "così com'è". Si tratta solo di "tre righe di codice" rispetto a "nuova interfaccia + due classi per implementare tale 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 fantastico. D'altra parte, il tempo che hai impiegato per rendere "buono" il tuo codice potrebbe essere stato impiegato per implementare un paio di utili funzioni.
Spesso mi sento molto insoddisfatto dei miei risultati: un buon codice che può fare solo A è peggio di un cattivo codice che può fare A, B, C e D.
È probabile che questo approccio provochi un guadagno netto positivo per un progetto software o è una perdita di tempo?