Вопрос

Это давняя проблема, с которой я сталкивался во многих бурных сеансах кодирования.

Один человек кодирует так, другой кодирует так.Итак, после долгих усилий мне любопытно...Есть ли правильный способ формулировки оператора PHP «IF ELSE»?

Лично я использую:

if ($variable == 'setvalue')
{
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}

Однако после многих аргументов мне были предложены другие варианты, такие как:

if ($variable == 'setvalue')
{
    $variable = executefunctiononvariable($variable);
}
else
{
    $variable = executedifferentfunctiononvariable($variable);
}

ИЛИ

if ($variable == 'setvalue')
    $variable = executefunctiononvariable($variable);
else
    $variable = executedifferentfunctiononvariable($variable);

ИЛИ

if ($variable == 'setvalue') {
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}
Это было полезно?

Решение

Лично я форматирую if/else, как последний:

if ($variable == 'setvalue') {
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}

На мой взгляд, ваша версия представляет собой смесь 1 и 3.

Я также работал с программистами, которые делают все это, и никогда не слышал о стандартном коде.

Веб-сайт php использует последний: http://ca2.php.net/manual/en/control-structures.elseif.php

Я также использую второй пример в некоторых случаях, когда оператор if всегда будет очень коротким.Если когда-нибудь будет возможность, что оно станет длиннее (более 1 строки каждая), я сделаю №1.Я стараюсь избегать № 2, когда это возможно, потому что потом сложно добавить {}.

Другие советы

Я использую последний:

if ($variable == 'setvalue') {
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}    

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

Правильный путь — следовать стандарту кодирования вашего проекта.Если у вас его нет, возьмите его из PHP-FIG, Zend, Symfony и т. д.

Эта форма кажется очень популярной:

if (condition) {
    statements
} else {
    statements
}

Для присвоения переменных я буду использовать троичный только если оператор может уместиться в одной строке:

$variable = !empty($foo) ? $foo : 'default';

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

Лично я предпочитаю:

if(something){
    doSomething();
}
elseif(somethingElse){
    doSomethingElse();
}
else{
    doAnotherThing();
}

Не забывайте о

if (expression):
   // code goes here
elseif (another expression):
   // code goes here
else:
   // code goes here
endif;

Лично мне нравится эта структура, когда я готовлю суп-тег.

Самое главное, что программисты, работающие над проектом, в значительной степени придерживаются такой же рекомендации по кодированию.Так что соберитесь, выберите одно или другое, а затем придерживайтесь его.

Раньше я все время делал (2), но меня выбили из программирования на Java, поскольку в соглашениях по кодированию Sun используется (4).Так что теперь я уже довольно привык к (4).В последнее время я немного занимался C#, и, кажется, по умолчанию используется (2) (вздох, поехали снова).

В PHP я по привычке делаю (4), но (2) тоже подойдет.Мне не нравится (1) совсем.

И (3) опасно.Лично я считаю, что скобки должны быть необходимы в соответствии с синтаксисом языка, даже если они предназначены только для одного оператора.Спасает вас от неприятностей.Я думаю, именно так Perl делает это по памяти.

Что я также ненавидеть это когда люди делают это:

if (something) {
  // do something
}
else if (something else) {
}

Это сводит меня с ума.Поэтому я считаю приемлемыми только (2) и (4).Меня не волнует, какой именно, главное, чтобы он выполнялся последовательно, желательно в рамках соглашений языка.

Нет правильного или неправильного пути, это мнение.Лично мне больше всего понравился последний(1ТБС???).Я никогда не использую без брекетов, в целом считаю это плохим стилем.

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

Стандарт кодирования PEAR: тот Стандарт кодирования PHP.Я бы порекомендовал к этому привыкнуть, поскольку вы найдете его в других проектах, таких как Zend, Doctrine, Symfony, Horde и многих, многих других.

http://framework.zend.com/manual/en/coding-standard.coding-style.html#coding-standard.coding-style.control-statements.if-else-elseif

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

Единственное, если вы не включите символ «{», вы ограничены одним выражением или функцией.

Кроме того, если вы хотите только определить переменные, вы можете использовать следующий код:

$variable = (CONDITIONAL STATEMENT) ? "It was true" : "It was false"; 

В моей компании мы используем:

if ($variable == 'setvalue')
{
    $variable = executefunctiononvariable($variable);
}
else
{
    $variable = executedifferentfunctiononvariable($variable);
}

Мне это не важно, пока есть стандарт

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

Пока код написан таким образом, что была хотя бы попытка сделать его читабельным, мне все равно.

Есть ли правильный путь?Ну, если было, то почему у нас есть варианты сделать это по-другому?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top