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

Должны ли методы с возвращаемым типом void использовать оператор return?

Я знаю, что бывают случаи, когда использование return; может служить полезной цели в Java, например, при защите:

public void foo(Bar bar) {
    if(bar == null)
        return;

    // bar is not null, go ahead and do stuff with it
}

Но как насчет того, чтобы дойти до конца метода с возвращаемым типом void? Например,

public void printMenu() {
    System.out.println("Print out some boilerplate info here, line 1.");
    System.out.println("Print out some boilerplate info here, line 2.");
    System.out.println("Print out some boilerplate info here, line 3.");

    return;
}

Помимо чистых предпочтений стиля, есть ли какие-либо причины или против включения этого return;? Если да, то каковы они?

РЕДАКТОР: Ну, на это быстро ответил. Подведем итог 15 ответам, указанным ниже: "Нет".

4b9b3361

Ответ 1

Возможно, вам заплатили строки кода?

Другое, тогда нет причин поместить пустой результат в конец.

Ответ 2

Я сам их избегаю. Это просто бесполезная строка кода. Фактически, PMD имеет правило, проверяющее такие бесполезные инструкции return.

Ответ 3

Я не вижу причин, даже с точки зрения стиля, чтобы в конце было свисающее возвращение. В конце концов, вы знаете, что он вернется, потому что там есть конечная скобка...

Ответ 4

Чистый стиль, основанный на вопросе, не имеет абсолютно никакой разницы (может быть, дополнительная инструкция asm, но кому это важно?). В зависимости от того, что вам более удобно или соблюдает соглашение, ранее установленное в коде.

Ответ 5

Я говорю, никогда не делайте этого. Операторы return в функциях void предназначены только для того, чтобы вырваться из логики операторов. Если вы начнете это делать, то вы отправите запутанное выражение читателям вашего кода, у вас возникнет соблазн подумать, что, возможно, вы планируете иметь какое-то выражение if, которое вы забыли. Всегда читайте.

Ответ 6

Одна из идей структурированного программирования заключалась в следующем:

Каждая процедура должна иметь ровно одну точку входа и ровно одну точку выхода.

Если вы подписаны на эту политику, то оператор return указывает на единственный способ выхода из этой процедуры.

На практике эта политика не делает код более понятным, и с 1970-х годов его игнорировали. Если вы разрешаете несколько операторов return в других подпрограммах, тогда вы должны разрешать операторы с нулевым возвратом, где это имеет наибольший смысл.

Ответ 7

Я думаю, что ненужные утверждения - это просто шум, поэтому я не добавлю этого возврата в конце. При этом я бы добавил возврат к началу метода, если что-то не удовлетворяет моим требованиям или, что еще лучше, я бы выбрал исключения IllegalArgumentException.

Ответ 8

В вашем примере "возвращение" в конце - это вопрос личного, командного или организационного стиля. Я лично предпочитаю делать явный возврат.

Ответ 9

Я думаю, кроме личных предпочтений, нет никакой разницы. Первый случай, который я считаю законным. В противном случае вы должны упаковать инструкции в большой оператор if.

В последнем примере возврат лишний.

Ответ 10

Я бы избегал этого только из точки согласованности. Его легче никогда не ставить, не забывая всегда добавлять его.

Ответ 11

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