2013-10-11 2 views
-2

Мой вопрос может быть странным или даже ненужным. Будет ли он причинять вред, чтобы всегда удовлетворять условию в , если заявление и опустить еще как фрагмент 1?Безопасность инструкции if и if-else

if (condition 1) { 

    // code here 

    if (condition 2) { 

     // code here 

    } 
} 

Или, фрагмент 2 лучше?

if (condition 1) { 

    // code here 

    if (!condition 2) { 
     return; 
    } 

    else { 

     // code here 

    } 
} 
+0

Я не понимаю этого. Вы спрашиваете, можно ли опустить ветку else в выражении if? –

+0

@ H2CO3 Точно. – WangYudong

+0

используйте 'else', если вам это нужно – Math

ответ

0

Некоторые рекомендации (например, в автомобильной промышленности) указывают, что инструкция else должна быть включена, даже если она пуста. В этом случае вы можете сделать комментарий внутри оператора else, указав, что на самом деле вы ничего не хотите делать внутри него.

Одно из преимуществ, о котором я могу думать, это. Если у вас есть:

if (condition) 
    doSomething(); 
doSomethingElse(); 

В этом случае, если дело будет выполнять DoSomething(), и дело еще будет выполнять doSomethingElse(). Если вы сейчас измените свой код следующим образом:

if (condition) 
    doSomething(); 
doSomethingElse(); 
doAnother(); 

Как вы думаете, что произойдет? Случай else выполнит только doSomethingElse(). DoAnother() будет выполняться в обоих случаях (if и else). Но действительно ли это то, что вы хотите? Возможно, это возможно, возможно, это не так. Возможно, вам нужно что-то вроде:

if (condition) 
{ 
    doSomething(); 
} 
else 
{ 
    doSomethingElse(); 
    doAnother(); 
} 

В этой ситуации doAnother() явно принадлежит к случаю else.

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

0

Хорошо ... Первое. Если вы ВСЕГДА удовлетворяете утверждению if, вам совсем не нужна инструкция if. Что касается наличия оператора if, который может фактически «сбой», вам не нужен оператор else, если только что-то конкретное не должно происходить, если вы проверяете, что false.

Итак, короче ... Вам не нужно вводить его «только потому, что».

0

Есть два правила (которые (как это может быть иначе) в конфликте), когда речь идет о читаемости исходного кода:

  • Тест на условие, что это находится в одном истинном пути, обрабатывать в другом случае с использованием else (если его вообще нужно обрабатывать).
  • Испытание на положительные условия, а не на отрицание.
1

Если вы хотите запустить некоторый код, только если условие не соответствует действительности, вы должны добавить else или else if. Ниже в Exemple:

if (condition) { 
    a=5; 
} 
else { 
    a=8; 
} 

, если условие истинно -> а = 5, если нет, то а = 8.

if (condition) { 
    a=5; 
} 
a=8; 

a = 8 во всех случаях.

0

Одно из преимуществ я могу видеть, что всегда включая else -statement охраняют от глупых ошибок, как

if (ptr != 0); 
    ptr = ptr->next; 

Учитывая, что вы не можете иметь что-то вроде else ветвпа для while - или for -loops однако это неполный подход.

Смежные вопросы