Recentemente ho la tendenza a progettare i miei metodi nel modo seguente:
if ( 'A' === $a ) {
if ( 'B' === $b ) {
return 'some thing';
} else if ( 'C' === $c ) {
return 'some other things';
}
}
/* If you made it up to here, then something has gone wrong */
return false;
Quindi fondamentalmente l'idea è di verificare se la prima condizione è corretta, se è poi continuare fino a raggiungere la prima istruzione return
per restituire il risultato previsto, in caso contrario passare alla condizione successiva e così via.
La chiave è che tutte le funzionalità del metodo sono già state ridotte e racchiuse in un'istruzione condizionale, pezzo per pezzo, quindi dovresti soddisfare almeno una condizione per compiere un'azione utile o se raggiungi l'ultima riga, quindi sarà return false
, il che significa che nessuna delle condizioni previste è stata soddisfatta, che nel mio progetto significa che l'input non era in un formato corretto o previsto, tipo di dati, intervallo, ecc. quindi il metodo non era in grado di continuare l'elaborazione che.
Posso raggiungere lo stesso obiettivo in un paio di modi diversi, ma questo sembra essere più pulito in quanto ho generalmente bisogno di scrivere codice solo per condizioni positive (in realtà non so come dovrebbe Lo chiamo) - a meno che non debba intraprendere un'azione specifica se una determinata condizione non si è verificata. E alla fine otterrò false
se il metodo non è in grado di svolgere il suo lavoro - con condizioni reali sul posto la maggior parte delle volte è quasi come un salto alla fine del metodo quando non è possibile passare attraverso un % dichiarazione diif
. In realtà è progettato in modo che tu possa passare questo if
e dirigerai a una successiva if
oa un'istruzione return
o è molto improbabile che corrisponda ad altre dichiarazioni di if
e salti direttamente al ultima dichiarazione return false
.
Ora le mie domande sono:
- È un (vero) design a prova di errore, che in questo caso è solo alla ricerca della condizione appropriata per continuare ed è disposto a fallire non appena si fallisce. È corretto o sto mescolando le cose qui? In caso contrario, esiste un termine specifico per questo?
- Anche se di recente ho generalizzato questo approccio per tutti i nuovi metodi che ho creato, vorrei sapere se c'è qualche svantaggio o difetto di progettazione che potrebbe mordermi più tardi.