Il mio stile personale è usare il singolo ifper i blocchi di guardia e if/ elsenel codice di elaborazione del metodo effettivo.
In questo caso, stai usando la myString == nullcondizione di guardia, quindi tenderei ad usare il singolo ifschema.
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 protezione che il resto del metodo sono nella forma if/ else. Confrontalo con l'esempio 2, in cui il blocco di protezione si trova nella ifforma singola , mentre il resto del metodo utilizza la forma if/ else. Personalmente, trovo l'esempio 2 più facile da capire, mentre l'esempio 1 sembra disordinato e troppo indentato.
Si noti che questo è un esempio inventato e che è possibile utilizzare le else ifistruzioni per ripulirlo, ma sto cercando di mostrare la differenza tra i blocchi di guardia e il codice di elaborazione della funzione effettiva.
Un compilatore decente dovrebbe comunque generare lo stesso output per entrambi. L'unico motivo per utilizzare l'una o l'altra è la preferenza personale o per conformarsi allo stile del codice esistente.