который лучше в Java
код style
?boolean check in if()
boolean status = true;
if(!status) {
//do sth
} else {
//do sth
}
или
if(status == false) {
//do sth
} else {
//do sth
}
который лучше в Java
код style
?boolean check in if()
boolean status = true;
if(!status) {
//do sth
} else {
//do sth
}
или
if(status == false) {
//do sth
} else {
//do sth
}
Бывший, конечно. Последний является избыточным и только показывает, что вы не поняли концепцию булевых очень хорошо.
Еще одно предложение: Выберите другое имя для вашей переменной boolean
. В соответствии с this Java style guide:
это префикс должен быть использован для логических переменных и методов.
isSet
,isVisible
,isFinished
,isFound
,isOpen
Это соглашение об именах для
boolean
методов и переменных, используемых Солнцем для основных пакетов Java.Использование префикса
is
решает общую проблему выбора плохих логических имен какstatus
илиflag
.isStatus
илиisFlag
просто не подходит, а программист вынужден выбрать более значащие имена.методы сеттера для
boolean
переменных должен быть установлен префикс, как в:
void setFound(boolean isFound);
Есть несколько альтернатив
is
префикс, который подходит лучше в некоторых ситуациях. Этиhas
,can
иshould
префиксы:boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
бывший. Последнее просто добавляет многословие.
Это более читаемая и хорошая практика.
if(!status){
//do sth
}else{
//do sth
}
, за исключением того, что я бы перевернул предложения, которые вы просто проверяете, если (статус) – 2010-11-26 08:44:27
Кроме того, вы можете переформулировать имя переменной префиксом «is-», чтобы указать, какое значение по умолчанию является. – 2013-03-23 05:01:08
Первый из них, или if (status) { /*second clause*/ } else { /* first clause */ }
РЕДАКТИРОВАТЬ
Если вторая форма действительно желательно, то if (false == status) <etc>
, в то время как уродливее, вероятно, будет безопаснее (WRT опечаток).
+1 для (false == status), который также дает указания для `if (0 == i)` вопрос не задан – subsub 2011-05-02 14:06:17
Я хотел бы предложить, что вы делаете:
if (status) {
//positive work
} else {
// negative work
}
==
В испытаниях, в то время как очевидно, излишние, также рискует одной =
опечатки, которая приведет к заданию.
+1 для указания на опасность ошибочного ввода одного «=» – RAY 2010-11-26 05:40:54
Первый. Но только другой точки, следующий также сделает ваш код более читаемым:
if (!status) {
// do false logic
} else {
// do true logic
}
Обратите внимание, что есть лишние пробелы между if
и (
, а также перед else
заявления.
EDIT
Как отметил @Mudassir, если есть НЕТ другой общий код в методе, используя логику, то лучше стиль будет:
if (!status) {
// do false logic
}
// do true logic
Если посмотреть при альтернативах на этой странице, конечно, первый вариант выглядит лучше, а второй - более подробным. Но если вы просматриваете большой класс, который написал кто-то другой, эта многословие может изменить разницу между реализацией теста или нет.
Одна из причин, по которой я отошел от Perl, состоит в том, что он так сильно полагается на пунктуацию, которая намного медленнее интерпретировать при чтении.
Я знаю, что меня здесь нет, но я почти всегда буду с более явным кодом, чтобы другие могли читать его более точно. Опять же, я бы никогда не использовал логическую переменную, называемую «статус». Может быть isSuccess или просто успех, но «статус», являющийся истинным или ложным, ничего не значит для случайного читателя интуитивно. Как вы можете сказать, я очень хорошо читаю код, потому что читаю так много кода, написанных другими.
Первый стиль лучше. Хотя вы должны использовать лучшее имя переменной
Это действительно зависит от того, как вы называете свою переменную.
Когда люди спрашивают «что лучше практиковать» - это подразумевает, что оба они верны, поэтому это просто вопрос, который легче читать и поддерживать.
Если имя вашей переменной «статус» (который имеет место в вашем примере кода), я бы предпочел, чтобы увидеть
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");
}
Мое личное чувство, когда дело доходит до чтения
if(!status) : if not status
if(status == false) : if status is false
, если вы не привыкли к чтению статуса!. Я не вижу вреда, делая второй путь.
, если вы используете «активный», а не статус I вещь, если (! Активен) более читаемым
`переключатель (статус) {случай верно: {...; ломать; } по умолчанию: { ...; ломать; }} `:) – tchrist 2010-12-01 05:22:31
@tchrist: ... и ваша точка? – missingfaktor 2010-12-01 11:19:03
switch (boolean) ошибочен, Boolean не может быть в переключателе – ashishdhiman2007 2017-04-14 10:44:03