Ответ 1
Возможно, вам заплатили строки кода?
Другое, тогда нет причин поместить пустой результат в конец.
Я знаю, что бывают случаи, когда использование 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 ответам, указанным ниже: "Нет".
Возможно, вам заплатили строки кода?
Другое, тогда нет причин поместить пустой результат в конец.
Я сам их избегаю. Это просто бесполезная строка кода. Фактически, PMD имеет правило, проверяющее такие бесполезные инструкции return
.
Я не вижу причин, даже с точки зрения стиля, чтобы в конце было свисающее возвращение. В конце концов, вы знаете, что он вернется, потому что там есть конечная скобка...
Чистый стиль, основанный на вопросе, не имеет абсолютно никакой разницы (может быть, дополнительная инструкция asm, но кому это важно?). В зависимости от того, что вам более удобно или соблюдает соглашение, ранее установленное в коде.
Я говорю, никогда не делайте этого. Операторы return в функциях void предназначены только для того, чтобы вырваться из логики операторов. Если вы начнете это делать, то вы отправите запутанное выражение читателям вашего кода, у вас возникнет соблазн подумать, что, возможно, вы планируете иметь какое-то выражение if, которое вы забыли. Всегда читайте.
Одна из идей структурированного программирования заключалась в следующем:
Каждая процедура должна иметь ровно одну точку входа и ровно одну точку выхода.
Если вы подписаны на эту политику, то оператор return
указывает на единственный способ выхода из этой процедуры.
На практике эта политика не делает код более понятным, и с 1970-х годов его игнорировали. Если вы разрешаете несколько операторов return в других подпрограммах, тогда вы должны разрешать операторы с нулевым возвратом, где это имеет наибольший смысл.
Я думаю, что ненужные утверждения - это просто шум, поэтому я не добавлю этого возврата в конце. При этом я бы добавил возврат к началу метода, если что-то не удовлетворяет моим требованиям или, что еще лучше, я бы выбрал исключения IllegalArgumentException.
В вашем примере "возвращение" в конце - это вопрос личного, командного или организационного стиля. Я лично предпочитаю делать явный возврат.
Я думаю, кроме личных предпочтений, нет никакой разницы. Первый случай, который я считаю законным. В противном случае вы должны упаковать инструкции в большой оператор if.
В последнем примере возврат лишний.
Я бы избегал этого только из точки согласованности. Его легче никогда не ставить, не забывая всегда добавлять его.
Это не служит никакой цели, но если вы хотите это сделать (потому что все в вашей команде делают это или по какой-либо причине), вы можете это сделать.