PHP: Улучшаем читабельность кода уменьшением уровней вложенности

Лучший стимул писать красивый код — это понимание необходимости потом его читать. Если Вы через неделю уже путаетесь в своем же коде — это плохой признак. Рано или поздно Вы забудете (новый код в оперативной памяти мозга затирает старый), но рано или поздно Вам нужно будет его читать и менять. Или не Вам) Один из первых принципов хорошего программиста — код должен быть легко понятен и читаем.

Уменьшение вложенности — одно из простых правил, которое легко выполнять, и еще проще потом поддерживать. Посмотрите — какая из этих функций приятнее читается даже при такой небольшой функциональности.

<?php
function referer()
{
     if (@$_SERVER['HTTP_REFERER']) {
          $ref = $_SERVER['HTTP_REFERER'];
          if ($ref && is_string($ref) && strlen($ref) > 1) {
              return $ref ;
          }
     }
     return false;
}

<?php
function referer()
{
     if (!isset( $_SERVER['HTTP_REFERER'])) {
          return false;
     }
     $ref = $_SERVER[ 'HTTP_REFERER'];
     if (!$ref || !is_string( $ref) || !strlen($ref)) {
          return false;
     }
     return $ref ;
}

Более сложный вариант — сходу все же просто сказать что она возвращает, не правда ли?

<?php
function example($a, $b, $c) 
{
	$result = 0;
	if ($a>$b) {
		if ($b>c) {
			$result = $b * $c;
		} elseif ($b>2) {
			$result = $b;
			if ($c>3) {
				$result = 6;
			}
		}
	}
	return $result;
}

<?php
function example($a, $b, $c)
{
	if ($a<=$b) return 0;
	if ($b>c) return $b * $c;
	if ($b>2) return $b;
	if ($c>3) return 6;
	return 0;
}

Для простоты считаем, что более двух уровней фигурных скобок (вложений), если их можно было избежать, это плохо. Более четырех — это причина переписывать или разбивать функцию на подфункции

Оставить комментарий

XHTML: Вы можете использовать такие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">