Использование if ... else ... или просто if ... для определения того, что возвращается - PullRequest
7 голосов
/ 13 июня 2010

Что лучше?

function test($val = 'a') {
    if($val == 'a') {
        return true;
    }
    return false;
}

или

function test($val = 'a') {
    if($val == 'a') {
        return true;
    } else {
        return false;
    }
}

По сути, они делают то же самое. Если $val не «a», функция возвращает false. Просто личные предпочтения?

Ответы [ 9 ]

22 голосов
/ 13 июня 2010

Они одинаковы. Однако для этого случая я предпочитаю:

function test($val = 'a') {
    return ($val == 'a');
}
9 голосов
/ 13 июня 2010

Из тех, что я предпочитаю второй для ясности.Тем не менее, я на самом деле предпочитаю

return ($val == 'a');
7 голосов
/ 13 июня 2010

Я думаю, что все сводится к тому, как сравнение "чувствует" вас. Я использовал бы первое, если бы казалось, что $ val, являющийся «a», является особым случаем, и обычно функция возвращает false. Я бы использовал второе, если бы мне казалось, что 50/50 - куда идти.

3 голосов
/ 13 июня 2010

В PHP, если ничего не сделано в функции и достигнут конец, это будет выглядеть так, как будто она возвращает false. Из-за этого никогда не нужно возвращать false, если больше ничего не должно быть выполнено внутри функции. Это оставляет нас с этим:

function test($val = 'a') {
    if($val == 'a') {
        return true;
    }
}

Если после оператора if, elseif или else есть только одна команда, фигурные скобки ("{" "}") не нужны, что приводит нас к следующему:

function test($val = 'a') {
    if($val == 'a') return true;
}

В PHP вы можете на самом деле вернуть сравнение, которое будет выполнено непосредственно перед его возвратом. Это то, что предложили некоторые из тех, кто ответил на этот пост. Делая это, оставьте нас с этим кодом:

function test($val = 'a') {
    return ($val == 'a');
}

Значение true будет возвращено, если блок "($ val == 'a')" равен true, в противном случае будет возвращено значение false, поскольку это не так. Логика.

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

EDIT:

Если вы хотите написать код, который легче понять не-PHP специалистам, другой альтернативой может быть следующее:

function test($val = 'a') {
    if($val == 'a')
        return true;
    else
        return false;
}

Я бы сказал, что использование фигурных скобок в обстоятельствах, описанных в моем втором примере, упрощает чтение кода, поскольку фигурные скобки, как правило, делают ваш код беспорядочным, если в нем нет нескольких строк. 1019 *

2 голосов
/ 13 июня 2010

Я действительно верю, что это то, что вы когда-либо намеревались передать для кода. Если вы посмотрите на это:

function test($val = 'a') {
    if($val !== 'a') {
        return false;
    }
    return true;
}

Вы можете видеть, что он делает то же самое, что и ваши примеры, но у него другое намерение. Для этого примера не имеет смысла иметь:

function test($val = 'a') {
    if($val !== 'a') {
        return false;
    }
    else {
        return true;
    }
}

Я думаю, что @Ned имел это, потому что он пытается передать намерение операции if.

1 голос
/ 13 июня 2010

Если бы вы не возвращали boolean, я бы выбрал первую форму. В этом случае я бы просто сделал:

return ($val == 'a');

как предлагали другие.

0 голосов
/ 13 июня 2010

Вместо:

function test($val = 'a') {
    if($val == 'a') {
        return true;
    } else {
        return false;
    }
}

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

function test($val = 'a') {
    if($val == 'a') {
        return true;
    }
    return false;
}

Это можно сделать дажекороче:

function test($val = 'a')
{
    return ($val == 'a');
}
0 голосов
/ 13 июня 2010

Пока вы читаете второй блок кода.Вы можете легко понять, что он возвращает false, когда val не равен 'a'.

Но в первом блоке кода трудно понять, когда он вернет falseЭто не так сложно в этом примере, но я предполагаю, что ваши предложения if не будут такими простыми.

0 голосов
/ 13 июня 2010

Я бы придерживался первого: чем проще код (и его легче читать), тем лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...