Ответ 1
Они одинаково эффективны, но B обычно считается более читабельным, особенно когда используется для устранения нескольких вложенных условий.
Это может звучать как глупый вопрос, и я не решался его опубликовать, но все же: если что-то нужно запускать только в определенном состоянии, какая из них более эффективна:
а.
if (condition) {
// do
// things...
}
В.
if (!condition) { return; }
// do
// things...
Они одинаково эффективны, но B обычно считается более читабельным, особенно когда используется для устранения нескольких вложенных условий.
Выберите наиболее читаемую вещь. Оптимизация производительности на этом уровне вряд ли будет проблемой. Даже очень чувствительные к производительности части фреймворков (например,.NET framework) не получают такой микро-оптимизации.
Настоящий вопрос в том, должно ли тебя это волновать?
Я говорю нет! Более важно иметь более читаемый код, чем выполнять некоторую микрооптимизацию.
Это стиль. Производительность не актуальна; оба производят почти идентичный машинный код.
Несколько соображений по стилю:
Если вы хотите избежать "горизонтального программирования", вы можете предпочесть B, чтобы избежать вложенных условий. Например, если вы хотите добавить исключения, не слишком сильно влияя на поток метода:
А:
public String getDescription(MyObject obj) {
if (obj == null) {
return "";
} else {
if (!obj.isValid()) {
return "invalid";
} else {
...
}
}
}
В:
public String getDescription(MyObject obj) {
if (obj == null) {
return "";
}
if (!obj.isValid()) {
return "invalid";
}
....
}
Но разница минимальна, если вы спросите меня. Определенно не стоит "война в стиле кода".
Хотя я согласен с тем, что сначала вы должны выбрать читаемость, я продолжу и добавлю немного информации: на С# нет никакой разницы. Он компилируется в одно и то же (при оптимизации с помощью режима Release). Другие языки? Кто знает, я уверен, что некоторые из них считают это другим, но шансы на то, что вам действительно нужно беспокоиться об этом, невелики.
Производительность более или менее одинакова в обоих случаях. Поэтому это становится больше вопросом стиля или предпочтения.
Я лично предпочитаю писать if--> return, т.е. Случай B, потому что он делает код более чистым и легко читаемым, особенно если код содержит сложные вложенные условия.