получить строки из БД
2) сгруппировть их
3) отправить в БД новые данные по каждой строке.
Это все должно происходить по очереди. Логично, что это три разных действия. Но они все работают с одним и тем же набором данных.Решение:
1) Вынести каждое действие в отдельную функцию.
Но тогда мы три раза проходим по одним и тем же данным.
2) Один раз пройтись по нужным данным, но тогда одна функция будет выполнять сразу три действия. И как ее назвать?
3) Какие еще есть варианты?
Функция может выполнять разные действия, это не нарушение принципа единственной ответственности. Группировку, возможно, можно сделать внутри запроса. Назвать как получится, а потом переименовать когда найдете более лучшее имя.
Функция не должна делать более 1 существенного действия
Делайте слои. Слой получения данных и слой обработки данных. Посмотрите на MVC
У функции должна быть единственная причина для изменения, это не одно и тоже. У вас должно быть так: бизнес-метод, который вызывает методы чтения и метод обновления.
Мне ваша формулировка нравится больше чем моя, но ваш предыдущий тезис не верен.
Изните, путаюсь с тем, кому отвечаю. Боб Мартин это неоднократно разжевывал, и такое восприятие принципа единственной ответственности, пожалуй, самое частое заблуждение в понимании солид.
SRP вообще не про функции если шо
Топик стартер из джаваскрипт, если что, стараюсь быть понятнее.
Если у вас это не единственная подобная "обработка", то вынесите эту логику на уровень контроллера (хендлера), либо в отдельный пакет. то есть у вас есть некий http обработчик или rpc, он получает данные, полученные данные вы тримите, после записываете в БД Недавно учу программирование, совет по небольшому опыту. Сильно лезть в архитектуру сразу после перехода на го -плохо и лишня когнитивная нагрузка, мозгу нужно с js слеть дать время.
Тут вопрос а надо ли это делать у себя в коде.
Обсуждают сегодня