Generalmente uso le istruzioni switch per semplificare un blocco di più istruzioni if, ad esempio restituendo una stringa di feedback a un utente in base a un input a scelta multipla.
Tendo anche a costruire classi in modo tale che esista un unico metodo di "gestione", per evitare passaggi sequenziali o invocazione di metodi concatenati all'interno di altri metodi della classe. Ho trovato questo aiuta a mantenere i metodi flessibili e focalizzati - cioè.
class MyClass{
// this method does nothing more than invoke the relevant method
// depending on the status following the previous. It's entire purpose
// is to control application flow
public function manageFlow($input){
$status = $this->stepOne($input);
if($status == false){
//exit routine
}
$status = $this->stepTwo($input);
if($status == false){
//exit routine
}
}
// this method has several sequential steps implemented direcly within it,
// for example to a user logging in
// it makes it impossible to re-use any of the intermediary steps
public function tangledFlow($input){
if($input == 'something){
//100 lines of code
}
//then handing on to the next bit
if($this->User->Authenticated){
//another 100 lines...
}
}
}
Poi ho pensato che avrei potuto usare un'istruzione switch per controllare questo tipo di esecuzione sequenziale - quindi la mia domanda è: qualcuno ha usato un'istruzione switch per questo tipo di controllo di flusso?