Generally I would prefer the structure of the code to follow the structure of the underlying "business" logic. In this case, my approach would depend what condition
represents. If it is an error check, for example, which won't normally be hit but might occasionally be used, then the asymmetry of the second form matches the asymmetry of the logic.
doLotOfStuff();
if (condition) {
return foo;
}
return bar;
But if either possibility is reasonable and it's simply a choice between them, I would allow the structure of the code to show that symmetry.
doLotOfStuff();
if (condition) {
return foo;
} else {
return bar;
}
The code is there for the programmer to read, not the compiler.