Оценка логической переменной в PHP: следует ли использовать If / Else или Switch? - PullRequest
0 голосов
/ 27 августа 2010

Мне нравится попадать в эти нелепые ситуации, когда я переоцениваю свои методы кодирования, так что вот так!

Этот вопрос, вероятно, выходит за рамки PHP (как и здравомыслие).При оценке булевой переменной какая из них является лучшей практикой?(предположим, что для троичного символа слишком много //do stuff)

if ($bool) {
    // do true stuff
} else {
    // do false stuff
}

или

switch ($bool) {
    case true:
        // do true stuff
        break;
    default:
        // do false stuff
        break;
}

Меня больше интересуют рабочие характеристики и / или особые соображения, чем общие утверждения типа "Если/ Остальное выглядит лучше: «Всегда используйте Switch» или «Делайте то, что считаете правильным».

То есть, если разницы действительно нет.

Ответы [ 2 ]

10 голосов
/ 27 августа 2010

Используйте версию if-else.Это очень ясно и легко понять.

Вы не должны использовать switch, если у вас есть несколько (> 2) значений для включения.В этом случае вы ничего не получите, используя switch (кроме как сделать ваш код менее понятным).

Если бы была какая-либо разница в производительности, версия if-else была бы быстрее, хотя, если бы была какая-либо разница, это действительнобыть незначительным.

Это будет микрооптимизация.Не делай этого.Прежде чем вводить какие-либо «оптимизации» в свой код, профилируйте его и определите свои узкие места.

0 голосов
/ 27 августа 2010

На всякий случай, вы также должны проверить, что ваша переменная действительно логическая (а не "", 0 или ноль, которая также может принимать значение false)

if($bool === false) {
 // false stuff
} else if($bool === true) {
 // true stuff
} else {
 /// WTF???
}
...