Который лучше?
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. Просто персональное предпочтение?
Я думаю, что все сводится к тому, как вам "кажется" сравнение. Я бы использовал первый, если бы казалось, что $ val, являющееся «a», было особым случаем, и обычно функция возвращала false. Я бы использовал второй, если бы он больше походил на 50/50.
Они такие же. Однако в этом случае я предпочитаю:
function test($val = 'a') {
return ($val == 'a');
}
Я бы остановился на первом, чем проще код (и его легко читать), тем лучше.
Вместо:
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');
}
Я действительно верю, что это то, что вы когда-либо пытались передать для кода. Если вы посмотрите на это:
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
.
Для ясности я предпочитаю второе. Однако на самом деле я предпочитаю
return ($val == 'a');
В 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;
}
Я бы сказал, что не использовать фигурные скобки в обстоятельствах, описанных в мой второй пример дает вам более удобный для чтения код, поскольку фигурные скобки, как правило, делают ваш код беспорядочным, если они не содержат нескольких строк.
Пока вы читаете второй блок кода. Вы можете легко понять, что он возвращает false, если val не равно 'a'.
Но в первом блоке кода немного сложно понять, когда он вернет false. В этом примере это не так сложно, но я предполагаю, что ваши предложения if не будут такими простыми.
Если бы вы не возвращали boolean
, я бы выбрал первую форму. В этом случае я бы просто сделал :
return ($val == 'a');
как предлагали другие.