Appoggio pienamente @ risposta Carl-manaster, ma penso che possiamo andare oltre.
Il mio approccio si basa sui seguenti principi:
- non ci dovrebbero essere else.
- le espressioni logiche complesse devono essere estratte in metodi privati per aumentare la leggibilità.
- c'è una suite di test che copre tutti i rami possibili. Questo è il motivo per cui le persone sono preoccupate per la complessità ciclomatica. E questo è il motivo per cui l'estrazione nel metodo aiuta.
Dal codice di esempio, non è chiaro che cosa esattamente questo metodo, quindi ho scelto alcuni nomi casuali e l'autore dovrebbe cambiarlo in qualcosa di più valido.
Non avevo prove e non c'è tempo, quindi non sono sicuro al 100% che funzionerà, ma dopo una serie di modifiche che ho finito con seguente codice:
function(cid, pid, cSubId, pSubId) {
return cmpScope.equals(GLOBAL) && isValidSomething() && isValidSomethingElse();
}
Dove metodi estratti sono:
function isValidSomething() {
if(cid != pid) {
return false;
}
if (cmpScope.equals(V) || cmpScope.equals(X) || cmpScope.equals(Y)) {
return true;
}
return cmpScope.equals(Z) && cSubId != pSubId;
}
function isValidSomethingElse() {
return cmpScope.equals(Z) && cid != pId;
}
È solo un esempio e puoi migliorarlo ancora di più.
Ancora una volta, il punto principale di questo è quello di avere metodi privati con un buon nome in modo da poterlo leggere "come una prosa ben scritta". Immagina:
function isMyCarValid() {
return isHaveWheels() && isHaveFuel() && isHaveDriver();
}
fonte
2015-11-17 17:12:34
pId e pid (vedere io e io) è un mio esempio? Ad ogni modo il codice IMHO sembra ok, non c'è bisogno di spremerlo. – Willmore