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

Булева проверка в условии "если"

Какой из них лучше стиля программирования Java?

boolean status = true;
if (!status) {
    //do sth
} else {
    //do sth
}

или же:

if (status == false) {
    //do sth
} else {
    //do sth
}
4b9b3361

Ответ 1

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

Еще одно предложение: выберите другое имя для вашей переменной boolean. По это руководство по стилю Java:

префикс должен использоваться для булевых переменных и методов.

isSet, isVisible, isFinished, isFound, isOpen

Это соглашение об именах для Используемые методы и переменные booleanот Sun для базовых пакетов Java.

Использование префикса is решает общий проблема выбора неправильных логических имен например status или flag. isStatus или isFlag просто не подходит, а программист вынужден выбрать больше значащие имена.

Сеттерные методы для переменных booleanдолжен иметь префикс как в:

void setFound(boolean isFound);

Существует несколько альтернатив Префикс is, который лучше подходит для некоторых ситуации. Это has, can и should префиксы:

boolean hasLicense();
boolean canEvaluate();
boolean shouldAbort = false;

Ответ 2

Я бы предположил, что вы:

if (status) {
    //positive work
} else {
    // negative work
}

Тест ==, хотя и явно избыточный, также подвержен риску одиночной опечатки =, которая приведет к назначению.

Ответ 3

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

Одна из причин, по которой я отошел от Perl, состоит в том, что он так сильно опирается на пунктуацию, которая гораздо медленнее интерпретировать при чтении.

Я знаю, что меня здесь нет, но я почти всегда буду с более явным кодом, чтобы другие могли читать его более точно. Опять же, я бы никогда не использовал логическую переменную, называемую "статус". Может быть isSuccess или просто успех, но "статус", являющийся истинным или ложным, ничего не значит для случайного читателя интуитивно. Как вы можете сказать, я очень хорошо читаю код, потому что читаю так много кода, написанных другими.

Ответ 4

Первый, или if (status) { /*second clause*/ } else { /* first clause */ }

ИЗМЕНИТЬ

Если вторая форма действительно нужна, то if (false == status) <etc>, хотя и более уродливая, вероятно, более безопасна (wrt typos).

Ответ 5

Первый. Последний просто добавляет многословие.

Ответ 6

Это также зависит от того, как вы называете свою переменную.

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

Если вы назовете свою переменную "статус" (что имеет место в вашем примере кода), я бы предпочел увидеть

if(status == false) // if status is false

С другой стороны, если вы назвали вашу переменную isXXX (например, isReadableCode), то первая более читаема. рассмотреть следующие вопросы:

if(!isReadable) { // if not readable
  System.out.println("I'm having a headache reading your code");
}

Ответ 7

Первый. Но еще один момент, следующий код также сделает ваш код более читаемым:

if (!status) {
    // do false logic
} else {
    // do true logic
}

Обратите внимание, что между if и ( есть дополнительные пробелы, а также перед оператором else.

ИЗМЕНИТЬ

Как отмечено @Mudassir, если в методе, использующем логику, существует NO другой общий код, тогда лучшим стилем будет:

if (!status) {
    // do false logic
}

// do true logic

Ответ 8

Мое личное чувство, когда дело доходит до чтения

if(!status) : if not status

if(status == false) : if status is false

если вы не привыкли к чтению статуса. Я не вижу вреда, делая второй путь.

если вы используете "active" вместо статуса I, если (! active) более читается

Ответ 9

Первый стиль лучше. Хотя вы должны использовать лучшее имя переменной

Ответ 10

Это более читаемая и хорошая практика.

if(!status){
//do sth
}else{
//do sth
}

Ответ 11

String result = isReadable() ? "This is readable" : "This is Not readable";