È vero che una "correzione" sporca "non è una correzione (a). Se un prodotto ha un problema, una soluzione pulita ha lo scopo di risolvere questo problema per poter:
- Riutilizzare la parte interessata del prodotto e assicurarsi che non ci siano problemi noti con esso,
- Non è necessario tornare a modificare il codice più tardi per risolvere i bug.
Con una correzione sporca, lo sviluppatore:
- Impossibile riutilizzare la parte interessata, perché non può essere sicura che funzionerà come previsto,
- Deve tornare più tardi per riscrivere correttamente il codice.
Quindi, invece di dedicare più tempo a sistemare qualcosa, una soluzione sporca viene utilizzata per trascorrere meno tempo immediatamente, ma più tempo ultimamente costringendo a tornare e fare una correzione e vietando di riutilizzare il codice nel frattempo.
Ovviamente, questo potrebbe non essere applicabile a tutte le correzioni sporche e dipende anche da ciò che chiamiamo una correzione sporca o meno. Esempio:
Un utente invia un rapporto dicendo che un programma fornisce un risultato errato quando l'input è uguale a 39.5. Una soluzione candidata al DailyWTF stupidamente sporca dovrebbe essere:
if (input == 39.5)
{
// 14.7 is a correct result, calculated by hand.
output = 14.7;
}
else
{
// Keep the old and broken algorithm.
// ...
}
È probabile che in pochi giorni o settimane, un altro rapporto di un altro cliente ci dirà che l'output non è corretto per altri valori di input.
Una soluzione meno sporca sarebbe quella di controllare l'algoritmo, vedere dove si è rotto e correggerlo, senza correggere i test di unità . Le possibilità di vederlo rompere di nuovo sono minori, ma può succedere, e c'è bisogno di tornare più tardi per aggiungere test unitari, magari aggiungere commenti, applicare linee guida di stile, scrivere documentazione, ecc.
Quindi sì, alcune correzioni più sporche di altre (b, c). Se alcuni sono più accettabili di altri dipende dalle linee guida della tua azienda.
Correzioni sporche mostrano un uso pragmatico del tempo (d, e). In un momento preciso Perché spendendo qualche minuto in meno, perdi ore del tuo tempo (o i tuoi colleghi passeranno più tardi a pulire la tua correzione). Ecco perché le correzioni sporche dovrebbero essere scoraggiate soprattutto in una squadra. Se uno sviluppatore fa molte correzioni sporche, lascia la compagnia, le altre persone del team avranno difficoltà a pulire le correzioni.
Come possiamo smettere di atteggiamenti come "correzioni sporche mostrano un uso pragmatico del tempo e non dovrebbero essere scoraggiati" dal diventare una pratica standard?
Con rafforzamento delle best practice , ma anche assicurando che gli sviluppatori di un team / in una comunichi bene su ciò che stanno facendo. Troppa pressione e stress dalla gestione può anche costringere gli sviluppatori a utilizzare più correzioni sporche solo per finire rapidamente. Questo è particolarmente vero quando il team manager è abbastanza inesperto e / o non si preoccupa della qualità del codice .