Принцип связного повествования


Часто при прочтении кода у меня возникает ощущение хаоса. Код функции начинается с подготовки переменных, которые будут использованы в самом конце функции. Алгоритм постоянно перепрыгивает с одной переменной на другую: подготовка одной переменной прерывается, внимание переключается на другую, потом возвращается к предыдущей, переходит к третьей и снова возвращается к первой.

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

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

Чтобы избежать бессвязности, нужно избегать лишних деталей реализации внутри одной функции. Всё, что относится к «подготовке» каждого отдельного значения, следует прятать внутри других функций.