Я знаю, что существуют времена при использовании 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 ответов, отправленных ниже: "Нет".
Perhaps you're paid by line of code?
Other then that there's really no reason to put an empty return in the end.
I avoid them, myself. It's just a useless line of code. In fact, PMD has a rule that checks for such useless return
statements.
Purely style-based question, makes absolutely no difference (maybe an extra asm instruction, but who cares?). Do whichever you feel more comfortable with or follow the convention previously established in the code.
I see no reason, even from a style perspective, to have a dangling return at the end. After all, you know it's going to return because there's an end brace there...
Я говорю, никогда не делайте этого. Операторы возврата в функциях void предназначены только для того, чтобы вырваться из логики оператора. Если вы начнете это делать, то отправите читателям вашего кода запутанное утверждение, у кого-то возникнет соблазн подумать, что, возможно, вы планировали иметь какой-то оператор if , который вы забыли. Всегда стремитесь к удобочитаемости.
Одна из идей структурированного программирования заключалась в следующем:
Каждая процедура должна иметь ровно одну точку входа и ровно одну точку выхода.
Если вы подпишетесь на эту политику, тогда оператор return
указывает единственный способ выйти из подпрограммы.
На практике эта политика не делает код более понятным, и с 1970-х годов ее в основном игнорировали. Если вы разрешаете несколько операторов возврата в других подпрограммах, вы должны разрешить нулевые операторы возврата там, где это имеет наибольший смысл.
In your example the 'return' at the end is a matter of personal, team or organization style. I personally prefer to do an explicit return.
Думаю, кроме личных предпочтений нет никакой разницы. Первый случай считаю закономерным. В противном случае вам следует упаковать операторы в большой оператор if.
Последний пример возврата является лишним.
Я бы избегал этого только из соображений согласованности. Легче никогда не ставить это, чем помнить всегда добавлять его.
Это не служит никакой цели, но если вы хотите это сделать (потому что все в вашей команде это делают или по какой-то другой причине), вы можете это сделать.
Я думаю, что ненужные утверждения - это просто шум, поэтому я бы не стал добавлять это возвращение в конце. При этом я бы добавил возвраты в начало метода, если что-то не удовлетворяет моим требованиям, или, что еще лучше, я бы выбрасывал исключения IllegalArgumentException.