2015-01-13 2 views
-2
if (conditionA && conditionB) { return true; } 

if (conditionA && !conditionB) { return false;} 

** OR **Какой синтаксис верен?

if (conditionA) { 
    if (conditionB) { 
     return true; 
    } 
    return false; 
} 

Может обеспечить больше контекста, если это необходимо? Различается ли это на разных языках? Это все то же самое?

+0

На каких разных языках? Ваш вопрос о Java? –

+1

Пожалуйста, не могли бы вы предоставить больше контекста? –

ответ

3

Я хотел бы предложить:

if (condition A) { 
    return conditionB; 
} 

Мои причины заключаются в следующем:

  • Повторяя if (conditionA нарушает "не повторять себя" принцип. Если вы меняете его в одном месте, вам необходимо изменить его как в
  • .
  • if (condition) return true else return false; кажется излишне сложным, когда целью является просто вернуть значение второго значения.
  • В общем, кажется, отлично передают свое намерение: если conditionA верно возвращение истинным или ложным в зависимости от conditionB
+0

Зачем вы предлагаете это? –

+0

Я добавлю причины ответа. – sprinter

0
return conditionA && conditionB; 
+1

Это неверно, потому что код OP не возвращается, если 'conditionA' является ложным. –

+0

@DavidWallace, это правильно – JulioJaavier

+2

Ну, он делает что-то отличное от того, что делает код OP, поэтому, если это правильный ответ, тогда это правильный ответ на другой вопрос. –

0

Кажется, все логично же.

Если это в Java, вы можете дополнительно сократить их в return conditionA && conditionB

+0

Это неверно, потому что код OP не возвращается, если 'conditionA' является ложным. –

+0

@DavidWallace, Он должен исправить это. Если есть оператор возврата, он должен охватывать все возможности. –

+0

Возможно, это находится в середине метода, который _shouldn't_ возвращает, если 'conditionA' является ложным. Вы написали код, который делает что-то совершенно отличное от того, что попросил ОП. –

0

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

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

В этом случае вы должны посмотреть на свой код в двух частях.

Во-первых, проверьте первое условие. Если это условие истинно, тогда вам нужно принять другое решение, основанное на условии B.

Таким образом, последний является лучшим вариантом, хотя я бы реорганизовать следующим образом:

if (conditionA) { 
    return conditionB; 
} 
+0

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

+0

Я не последовал за источником, это просто правило, за которым я следую.Я думаю, что это чище, проще поддерживать и понимать, избегая вложенных утверждений, хотя есть много случаев, когда необходимо использовать вложенные операторы if. Это просто личное предпочтение, так как большинство компиляторов все равно оптимизирует его. –

+1

В настоящее время лучший ответ здесь, потому что он правильный, и потому, что он дает последовательное обоснование для написания его так, как он был написан. –

0

все условия такие же

взять этот ...

if (conditionA && conditionB) { return true; } 

компилятор Checkout другое условие только и только если первое верно.

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

0

позволяет сравнить

if (conditionA && conditionB) { return true; } 

if (conditionA && !conditionB) { return false;} 

VS

if (conditionA) { 
    if (conditionB) { 
     return true; 
    } 
    return false; 
} 

производительность мудрый первый код беден, потому что, если первое условие, если если (conditionA & & conditionB) wents неправильно компилятор будет проверять Второе условие, которое составляет если (состояниеA & &! ConditionB)

в то время как во 2-м коде если (conditionA) wents неправильно компилятор не будет иметь каких-либо других условий, чтобы проверить, так что выход обоих будет одинаковым в каждом условиях, но производительность будет отличаться

во всех этих условиях необходимо, чтобы conditionA должен быть правдой, если conditionA ложен в любом случае то я не думаю, что необходимо проверить условие б и если conditionA является true и conditionB верно, то true возвращается и false возвращается в случае, если conditionB является fa ЛСЭ, так что вы можете записать его в виде

if(conditionA){ 
    conditionB 
} 
-1

(1) Синтаксис

if (conditionA && conditionB) { return true; } 

if (conditionA && !conditionB) { return false;} 

(2) Синтаксис

if (conditionA) { 

    //Only conditionA is true you can write more code and other logic here 
    if (conditionB) { 
     return true; 
    } 
    //conditionB is true or false, you can write more code and other logic here 
    return false; 
} 

Acutally эти 2 Syntaxs не совпадают.
Что касается вашего титульного вопроса, нет смысла решать, какой синтаксис более корректен из синтаксисов той же точки?
Итак, в соответствии с этими различиями вы должны выбрать, какой синтаксис соответствует вашей логике.
Ваша логика может быть ответом, для которого более корректным является синтаксис.

+0

Downvoter, пожалуйста, прокомментируйте свою причину ?? –