Spesso si vede un po 'di codice come questo errore:anti-modello: Superfluo altro ramo contenente la clausola di protezione/gestione
public void bla()
{
if (conditionTrue)
{
// long code here
} else {
// otherwise do nothing
return;
}
// some more code
}
Il ramo altro, ovviamente, è una certa clausola di salvaguardia che scivolava verso il basso, il rientro per il lungo-code -sezione può essere appiattito:
public void bla()
{
if (!conditionTrue)
return;
// long code here
// some more code
}
Alcuni esperti All'inizio si spegne annidando questi superfluo se rami 3, 4 o 5 livelli, creando codice che è assolutamente difficile da leggere.
So di questi luoghi in qualche modo di toccare questo argomento:
- http://martinfowler.com/refactoring/catalog/replaceNestedConditionalWithGuardClauses.html
- http://c2.com/cgi/wiki?GuardClause
- http://c2.com/cgi/wiki?HandleErrorsInContext
- https://developer.mozilla.org/En/Mozilla_Coding_Style_Guide#Error_handling
- Shall I use guard clause, and try to avoid else clause?
Si tratta di un anti-pattern con nome e qual è il suo nome in tal caso?
bello ... non sapevano che, anche se evito come l'inferno. –
Oh uomo, ho molta familiarità con questo tipo di codice: '( – GETah
Grazie per questo, ma in realtà sto cercando un nome per la descritta situazione di ritorno-altro. Il codice Arrow entra in gioco quando si tratta di (il citato) più livelli di indentazione. – mdo