Flattening Arrow Code - код в виде стрелки, является примером того, как не надо писать код (см. Arrow Anti-Pattern ), демонстрация:
|
if
if
if
if
do something
endif
endif
endif
endif
|
![]() |
Давайте рассмотрим реальный пример.
Плохой код (многие из нас так и пишут):
function isCorrect($param1, $param2, $param3)
{
if ($param1 !== $param2) {
if ($param1 === ($param3 * 2)) {
if ($param2 === ($param3 / 3)) {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
return false;
}
Хороший код (Multiple Returns):
function isCorrect($param1, $param2, $param3)
{
if ($param1 === $param2) { return false; }
if ($param1 !== ($param3 * 2)) { return false; }
if ($param2 !== ($param3 / 3)) { return false; }
return true;
}
Отличный код (принцип SESE - Single Entry, Single Exit):
function isEqual($param1, $param2)
{
return $param1 === $param2;
}
function isDouble($param1, $param2)
{
return $param1 === ($param2 * 2);
}
function isThird($param1, $param2)
{
return $param1 === ($param2 / 3);
}
function isCorrect($param1, $param2, $param3)
{
return !isEqual($param1, $param2)
&& isDouble($param1, $param3)
&& isThird($param2, $param3);
}
Конечно, это немного дольше, но таким образом:
Источник: 1 - 2 - 3 - 4 - 5 - 6