My personal style is to use the single if
for guard blocks, and the if
/else
in the actual method processing code.
In this case, you're using the myString == null
as a guard condition, so I would tend to use the single if
pattern.
Consider code that's a little more complicated:
Example 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;
}
}
}
Example 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;
}
}
In Example 1, both the guard and the rest of the method are in the if
/else
form. Compare that to Example 2, where the guard block is in the single if
form, while the rest of the method uses the if
/else
form. Personally, I find example 2 easier to understand, while example 1 looks messy and over-indented.
Note that this is a contrived example and that you could use else if
statements to clean it up, but I'm aiming to show the difference between guard blocks and the actual function processing code.
It comes down to personal preference, aA decent compiler should generate the same output for both of them anyway. The only reason to use one or the other is personal preference or to conform to the style of the existing code. It might not make a difference in a small method, but with larger blocks of code, it could.