Следует ли избегать в 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

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

Другие вопросы по тегам