Il mio stile personale è utilizzare il singolo if
per i blocchi di guardia e if
/ else
nel codice di elaborazione del metodo effettivo.
In questo caso, stai utilizzando myString == null
come condizione di guardia, quindi tenderei a utilizzare il singolo pattern if
.
Considera il codice un po 'più complicato:
Esempio 1:
public bool MyFunction(myString: string){
//guard block
if (myString == null){
return false;
}
else{
//processing block
myString = escapedString(myString);
if (myString == "foo"){
//some processing here
return false;
}
else{
myString = "Name " + myString;
//other stuff
return true;
}
}
}
Esempio 2:
public bool MyFunction(myString: string){
//guard block
if (myString == null){
return false;
}
//processing block
myString = escapedString(myString);
if (myString == "foo"){
//some processing here
return false;
}
else{
myString = "Name " + myString;
//other stuff
return true;
}
}
Nell'Esempio 1, sia la guardia che il resto del metodo sono nel formato if
/ else
. Confrontalo con l'Esempio 2, in cui il blocco di guardia si trova nella singola forma if
, mentre il resto del metodo usa il formato if
/ else
. Personalmente, trovo che l'esempio 2 sia più facile da capire, mentre l'esempio 1 sembra disordinato e troppo indentato.
Si noti che questo è un esempio forzato e che è possibile utilizzare le istruzioni else if
per ripulirlo, ma sto mirando a mostrare la differenza tra i blocchi di guardia e il codice di elaborazione della funzione effettiva.
Un compilatore decente dovrebbe comunque generare lo stesso risultato per entrambi. L'unica ragione per utilizzare l'una o l'altra è la preferenza personale o per conformarsi allo stile del codice esistente.