Ecco il mio prendere. codice che utilizzano bandiere:
...
if (dogIsBarking && smellsBad) {
cleanupNeeded = true;
}
doOtherStuff();
... many lines later
if (cleanupNeeded) {
startCleanup();
}
...
Molto impuro. Il programmatore semplicemente capita di codice in qualsiasi ordine la sua mente gli dice. Ha appena aggiunto il codice in un posto a caso per ricordare a se stesso che la pulizia è necessaria in seguito ... Perché non ha fatto questo:
...
doOtherStuff();
... many lines later
if (dogIsBarking && smellsBad) {
startCleanup();
}
...
E, seguendo consigli da Robert Martin (codice pulito), in grado di refactoring logica in modo più significativo:
...
doSomeStuff();
... many lines later
if (dogTookADump()) {
startCleanup();
}
...
boolean dogTookADump() {
return (dogIsBarking && smellsBad);
}
sacco Così, ho visto e un sacco di codice in cui potrebbe essere seguita semplici regole come sopra, ma la gente continuare ad aggiungere complicazioni e bandiere per nessun motivo! Ora, ci sono casi legali in cui le bandiere potrebbero essere necessarie, ma per la maggior parte dei casi sono uno stile che i programmatori stanno trasferendo dal passato.
fonte
2016-04-18 18:25:33
questo sembra horror in codice :) Continuo a esprimere la mia antipatia per questo tipo di codifica in ogni domanda che posso trovare correlato a questo. Se (condizione) {return true;} else {return false;} OMG! –
@MasterPeter: Sono d'accordo, infatti l'ho elencato come uno dei miei "petardi ignoranti" pet peeves: http://stackoverflow.com/questions/423823. –
@Brian: forse ci sono arrivato prima di http://stackoverflow.com/questions/423823/whats-your-favorite-programmer-ignorance-pet-peeve/424005#424005 –