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