Open olgaklimenko opened 5 days ago
Понял. Подумаю, как сделать. А это не противоречит самому духу архитектуры handle pattern, когда можно в любом месте изменить поведение подменив функции, например, на запись в файл?
Я поняла, что ты имеешь в виду, но думаю, это не противоречит handle pattern
. Гибкость для изменения поведения, к которой мы стремимся, используя хэндл паттерн, сохранится, даже если logHandle
передавать один раз на уровне инициализации. Если понадобится изменить его (например, начать логировать в файл), это можно сделать через конфигурацию или при повторной инициализации, а не через передачу в каждый вызов функции.
Логгер обычно задается для всей системы в зависимости от окружения, где запущен проект. Если бы logHandle
у тебя в проекте действительно менялся для разных функций (хотя, думаю, это не очень частый кейс в реальности), тогда такой подход мог бы иметь смысл. Но в данном случае, думаю, оптимизация оправдана.
Могу предложить интуитивный лайфхак, который чаще всего срабатывает (как минимум должен быть маркером того, чтобы посмотреть, можно ли отрефакторить код). Если в сигнатуре функции ты видишь постоянно повторяющийся аргумент, который связан с вещами, которые настраиваются один раз при старте проекта (например, конфиги, логгеры или что-то зависящее от окружения), то велика вероятность, что этот параметр не нужно тащить через весь код. Вместо этого можно частично применить функцию на уровне инициализации или положить его в Reader, чтобы избавить код от излишней передачи параметров.
Handlers.Logger.logMessage
принимает первым параметромlogHandle
, который инициализируется при старте приложения и при каждом вызове функции логирования он одинаковый. Предлагаю оптимизировать код, передавlogHandle
вlogMessage
один раз на уровне инициализации.