Используя если … еще … или просто если … для определения, что возвращается

Который лучше?

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

или

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

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

7
задан alternative 12 June 2010 в 21:39
поделиться

9 ответов

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

8
ответ дан 6 December 2019 в 04:55
поделиться

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

function test($val = 'a') {
    return ($val == 'a');
}
22
ответ дан 6 December 2019 в 04:55
поделиться

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

0
ответ дан 6 December 2019 в 04:55
поделиться

Вместо:

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
ответ дан 6 December 2019 в 04:55
поделиться

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

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 .

2
ответ дан 6 December 2019 в 04:55
поделиться

Для ясности я предпочитаю второе. Однако на самом деле я предпочитаю

return ($val == 'a');
9
ответ дан 6 December 2019 в 04:55
поделиться

В 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');
}

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

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

РЕДАКТИРОВАТЬ:

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

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

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

3
ответ дан 6 December 2019 в 04:55
поделиться

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

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

0
ответ дан 6 December 2019 в 04:55
поделиться

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

return ($val == 'a');

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

1
ответ дан 6 December 2019 в 04:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: