Как правильно отформатировать операторы PHP 'IF ELSE'? - PullRequest
7 голосов
/ 15 февраля 2009

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

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

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

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

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

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

OR

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

OR

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

Ответы [ 12 ]

22 голосов
/ 15 февраля 2009

Я лично форматирую свой 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, когда это возможно, потому что трудно добавить {} позже.

8 голосов
/ 15 февраля 2009

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

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

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

7 голосов
/ 15 февраля 2009

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

Эта форма выглядит очень популярной:

if (condition) {
    statements
} else {
    statements
}

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

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

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

4 голосов
/ 15 мая 2009

Не забудьте про

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

Мне лично нравится эта структура, когда я готовлю какой-нибудь суп-пэг.

4 голосов
/ 15 февраля 2009

Я лично предпочитаю:

if(something){
    doSomething();
}
elseif(somethingElse){
    doSomethingElse();
}
else{
    doAnotherThing();
}
3 голосов
/ 15 февраля 2009

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

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

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

То, что я тоже ненавижу , это когда люди делают это:

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

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

3 голосов
/ 15 февраля 2009

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

2 голосов
/ 15 февраля 2009

Стандарт кодирования 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

2 голосов
/ 15 февраля 2009

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

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

1 голос
/ 15 февраля 2009

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

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

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

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