Это вещь стиля. Производительность не актуальна; оба производят почти идентичный машинный код.
Несколько соображений по поводу стиля:
Если вы хотите избежать «горизонтального программирования», вы можете предпочесть B, чтобы избежать вложенных условий. Например, если вы хотите добавить исключения, не влияя слишком на поток метода:
A
public String getDescription(MyObject obj) {
if (obj == null) {
return "";
} else {
if (!obj.isValid()) {
return "invalid";
} else {
...
}
}
}
B
public String getDescription(MyObject obj) {
if (obj == null) {
return "";
}
if (!obj.isValid()) {
return "invalid";
}
....
}
Но разница минимальна, если вы спросите меня. Определенно не стоит «войны в стиле кода».