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