Su innumerevoli (beh, numerabili, ma molte) occasioni, specialmente all'interno di un metodo/funzione di una classe, sono stato in una situazione in cui voglio fare una serie di operazioni all'interno una funzione di annullamento del reso, ma solo if(condition met)
. Nella maggior parte dei casi, posso vedere come (supponendo che il codice funzioni) un'istruzione else
possa essere rimossa del tutto semplicemente ritornando nel blocco if
.Un'altra istruzione rallenta la velocità di elaborazione/tempo di esecuzione? (In situazioni in cui uno potrebbe essere evitato)
Ecco un esempio specifico, nel caso in cui non aveva senso:
Con un'istruzione else (come un insegnante avrebbe mostrato)
private void ifThisDoThat(params){
if(dependenciesNotMet) return;
else{
////DO STUFF HERE...
}
}
Senza (più parsimoniosi)
private void ifThisDoThat(params){
if(dependenciesNotMet) return;
//Assuming the above does not execute, DO STUFF HERE...
}
Sto pensando di rimuovere la dichiarazione else
, se l'ottimizzazione fosse del tutto, sarebbe stata classificata come micro-ottimizzazione, ma immaginavo comunque che avrei chiesto la mia edificazione.
In chiusura:
Esistono vantaggi di utilizzare un return
per rimuovere un blocco else
?
Il compilatore esegue un lavoro aggiuntivo se utilizzo un'istruzione else
?
C'è un motivo per utilizzare sempre il else
(in caso di errori o per altri motivi)?
Non penso che return void sia l'esempio migliore, perché 'if (dependenciesMet) {// Do stuff}' generalmente sarebbe meglio del primo modo secondo me. – Dukeling
Sto iniziando a capire che è più una decisione stilistica che altro. Capisco che se le istruzioni, una volta compilate, "branch" (* Alla fine dell'istruzione if * 'BRA [someLabel]'), ed evitando un ramo _can_ riducono il tempo di compilazione, ma le istruzioni 'else' sono compilate (per tutte le apparenze) in allo stesso modo di un normale blocco di codice, eccetto che sono specificatamente referenziati alla fine delle istruzioni compilate dell'istruzione if. In altre parole, non c'è differenza. Ah bene. EDIT: Tranne che un'altra istruzione genera un'etichetta (che sembra insignificante?). – Jordan