Код функции явно указывает на конечный результат и границы алгоритма


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

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

Соответственно, есть код, нацеленный на получение каждого отдельного результата, у этого кода есть начало и конец. Когда фрагмент находится внутри простыни кода, начало и конец как правило не видны явно.

Если тот же самый кусок кода оформить в виде функции, то на конечный результат мне указывает оператор return. Увидев, где находится конечный результат, я распутываю воплощённый в коде алгоритм гораздо быстрее.

Кроме конечного результата, в явном виде указаны и границы кода, который этот результат формирует: вот начало, вот конец, вот весь код, другого нет.

Главное правило для превращения фрагмента кода в функцию: у этого фрагмента понятный результат, смысл которого я могу легко описать и дать ему понятное короткое название.