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