Подтвердить что ты не робот

Java - return или if-else

Возможный дубликат:
Если функция имеет только один оператор return?

Это то, о чем я говорю.

if (condition) {
    aVariable = 1;
    return;
}
doSomething();

if (condition) {
    aVariable = 1;
} else {
    doSomething();
}

Один из них предпочтительнее другого (соглашения и т.д.)?

4b9b3361

Ответ 1

Чтение является самым важным. Таким образом, ранние возвращения при начале функций в порядке, но как только метод начинает делать что-то более сложное, чем проверка его вменений/состояния объекта, он должен иметь только один возврат.

И если он слишком сложный, он должен быть реорганизован на несколько функций.

Ответ 2

Возвращение на раннем этапе может улучшить читаемость, уменьшив вложенность вашего кода.

В некоторых языках лучше всего иметь один оператор return, например, на С++, который вы должны выделить в верхней части и де-выделить в нижней части вашего метода, но Java не является таким языком, поэтому предпочитайте читаемость над одиночный оператор возврата.

Многие люди используют правило единственного возврата, потому что не понимают, почему оно существует, или потому, что у них есть фон в управляемых языках.

Обратите внимание

Прежде чем вы прокомментируете "один истинный способ" написания кода, остановитесь на мгновение и рассмотрите следующее.

Почему должен быть только один оператор return?

Если вы не можете придумать вескую причину, перестаньте утверждать, что это должно быть так.

Ответ 3

  • Для лучшей практики оператор возврата должен быть последней строкой функции

  • Использование блока else - хороший метод, потому что, если вы хотите добавить какой-то другой код в будущем, первый блок кода может нуждаться в редактировании

Примечание. Все методы имеют по существу и минусы. Их решение Silver bullet.

Ответ 4

Второй предпочтительнее, поскольку методы должны иметь только один оператор return, и он должен быть в конце самого метода. Если вы хотите углубиться в эту тему, есть много программ, которые выполняют проверки над вашим кодом. Один из них PMD. Существует также полезный плагин eclipse для проверки вашего кода в соответствии с конвенциями, которые вы ищете.

Ответ 5

Как только вы нажмете return, метод завершится и вернется к вызывающему методу в стеке.

public void myMethod(){
if (condition) {
    aVariable = 1;
    return;
}
doSomething();
}

и

public void myMethod(){
if (condition) {
    aVariable = 1;
} else {
    doSomething();
}
}

сделает то же самое, но AFAIK предпочитает, чтобы какой-либо метод имел только одну точку выхода (по крайней мере, это то, что говорит Эдсгер Дейкстра)

Ответ 6

Нет, вы можете использовать оба способа. Первый способ также используется, когда у вас много других условий, и возврат выведет вас из метода. Таким образом, у вас нет вложенных условий.

Ответ 7

Любой фрагмент кода будет работать. Это будет зависеть от контекста, в котором используется код.