Size: a a a

2020 October 03

DT

Dmitriy Tkachenko in symfony
Тогда получается у него 2 причины для изменения - это
источник

DT

Dmitriy Tkachenko in symfony
Получение анекдота и метод ускорения (в данном случае кэш). Но мне не сильно понятно что за сервис анекдотов
источник

DT

Dmitriy Tkachenko in symfony
Это выглядит само по себе как репозиторий
источник

DT

Dmitriy Tkachenko in symfony
Ну тоесть сервис кэша не может вернуть неверные данные. Это не его уровень ответственности. А сервис который обрабатывает какие-то значения не должен заниматься ошибками получения этих значений. Возвращаясь к первоначальном твоему сообщению - проблема множества моков это не проблема тестов, а твоего кода.
На сейчас же получается с твоей наркоманией ты тратишь уйму времени на написание тестов (описывать 2-3 мока на один сервис эт пипец), а как следствие того что ты параноидально тестишь все возможные варианты - у тебя хрупкие тесты. Получается ты очень много времени тратишь на  тесты.
источник

D

Dmitry in symfony
Dmitriy Tkachenko
Ну тоесть сервис кэша не может вернуть неверные данные. Это не его уровень ответственности. А сервис который обрабатывает какие-то значения не должен заниматься ошибками получения этих значений. Возвращаясь к первоначальном твоему сообщению - проблема множества моков это не проблема тестов, а твоего кода.
На сейчас же получается с твоей наркоманией ты тратишь уйму времени на написание тестов (описывать 2-3 мока на один сервис эт пипец), а как следствие того что ты параноидально тестишь все возможные варианты - у тебя хрупкие тесты. Получается ты очень много времени тратишь на  тесты.
Да. Я трачу на тесты больше времени. Но это окупается меньшим количеством непредсказуемых ситуаций

На счёт похожести на репозиторий. Ну пусть там в сервисе будет спец алгоритм ранжирования входящий через интерфейс. И кеш для каких либо значений предгенерации или типа того. Вариантов можно придумать массы когда в сервис лезет 4-5 интерфейсов каждый из которых может иметь сайд эффекты при реализации. И если вы не хотите чтобы ваш сервис падал на каждый непонятный чих со стороны реализации интерфейсов вас просто необходимо предусматривать все ситуации.
источник

D

Dmitry in symfony
Dmitriy Tkachenko
Тогда получается у него 2 причины для изменения - это
Это если смотреть с точки зрения реализации. А вы смотрите с точки зрения актора. И будет всегда одна.
источник

D

Dmitry in symfony
Срп трактуется по-разному. Сильно по-разному.
источник

SP

Sergey Protko in symfony
Dmitry
Срп трактуется по-разному. Сильно по-разному.
Часто это объясняется неграмотностью
источник

SP

Sergey Protko in symfony
Всегда можно обратиться к первоисточнику и разобраться но зачем если можно услышать определение и думать что этого достаточно для интерпритации
источник

SP

Sergey Protko in symfony
Масса примеров где простая идея (например user story) обрастает булшитом
источник

D

Dmitry in symfony
Sergey Protko
Всегда можно обратиться к первоисточнику и разобраться но зачем если можно услышать определение и думать что этого достаточно для интерпритации
И что говорит нам источник ? СРП - класс должен иметь только одну причину для изменений.
источник

D

Dmitry in symfony
Есть класс сервиса который берет данные из хранилища и передаёт их на обработку алгоритму. Результат возвращает.
Алгоритм и хранилище это интерфейсы.
источник

BT

Bohdan Turchyk in symfony
Dmitriy Tkachenko
Получение анекдота и метод ускорения (в данном случае кэш). Но мне не сильно понятно что за сервис анекдотов
сервис анекдотов выглядит как анекдот
источник

D

Dmitry in symfony
Bohdan Turchyk
сервис анекдотов выглядит как анекдот
Вы можете вместо анекдота выбрать любую другую сущность. Разницы не будет.
источник

SP

Sergey Protko in symfony
Dmitry
Есть класс сервиса который берет данные из хранилища и передаёт их на обработку алгоритму. Результат возвращает.
Алгоритм и хранилище это интерфейсы.
И где тут хоть что то про срп?
источник

SP

Sergey Protko in symfony
Где анализ причин изменения?)
источник

D

Dmitry in symfony
Я не вижу там нарушения срп. Если вы видите - аргументируйте.
источник

D

Dmitry in symfony
Class PopularEntriesService
   Function analyze(AlgorithmInterface, EntriesRepositoryInterface, SettingRepositoryInterface)
источник

D

Dmitry in symfony
AlgorithmInterface->init(SettingInterface->get)
Return AlgorithmInterface->analyze(EntriesRepositoryInterface->get)
источник

D

Dmitry in symfony
На это кусок кода нужно накидать как минимум с десяток тестов если я хочу чтобы сервис был стабилен. Даже если реализации протестированы по отдельности
Потому что сервис не может знать какую зернь выкинет реализация.

А где ту нарушение срп для сервиса я не понимаю
источник