Следует ли избегать в Java нескольких операторов if, таких как "if (условие) if (условие) ..."?
Моя IDE (IntelliJ IDEA) говорит мне, что у меня есть возможность удалить фигурные скобки в этом выражении if:
if (objectIsOfTypeFoo) {
if (objectOfTypeFooIsShared) {
// do something with Object of type Foo knowing that it's shared...
} else {
// do something with Object of type Foo knowing that it's not shared...
}
} else if (objectIsOfTypeBar) {
...
}
Становиться:
if (objectIsOfTypeFoo) if (objectOfTypeFooIsShared) {
// do something with Object of type Foo knowing that it's shared...
} else {
// do something with Object of type Foo knowing that it's not shared...
} else if (objectIsOfTypeBar) {
...
}
Я понимаю, как это имеет смысл, и заманчиво потерять отступ, но я обеспокоен тем, что читаемость может пострадать. Последний выглядит чище, но стоит ли экономить место потенциальной путаницы?
Я предполагаю, что разница в производительности между ними тривиальна, если вообще существует.
И в качестве последующего вопроса: есть ли предел тому, сколько 'if (условие)' вы можете поместить в одну строку, или, скорее, в какой момент их становится слишком много?
4 ответа
Я голосую за то, что ты уже сделал.
Я даже не использую это:
if(foo)
return bar;
Мне нравится это вместо этого:
if(foo){
return bar;
}
"программы должны быть написаны для того, чтобы люди могли читать, и только для машин"
Всегда используйте брекеты. Однажды вы захотите добавить второе утверждение в блок if или else, и тогда вам захочется. Тем не менее, вы действительно делаете instanceof
чеки? Можете ли вы переработать вашу программу, чтобы превратить их в полиморфное поведение объекта?
Я бы предпочел первый. Я думаю, что бит с несколькими if в одной строке не читается.
Извините, но я собираюсь проголосовать, чтобы закрыть. Это будет дискуссия без ответа.
Рекомендуется всегда использовать фигурные скобки, но есть ситуация, когда фигурные скобки не используются, и лучше их не использовать, потому что они более читабельны
if(condition){
} else if (condition) {
...
}else if (condition3){
}
если вы всегда используете фигурные скобки, это было бы так. Вероятно, я ошибаюсь в каком-то месте.
if(condition){
} else{
if (condition) {
...
}else {
if (condition3){
}//end if
}//end else
}//end else
Поэтому я думаю, что использование всегда зависит от читабельности, как указано выше, программы должны быть написаны для того, чтобы люди могли читать, и только для машин.