Как стать автором
Обновить

Комментарии 5

Как мне кажется, DRY не должен противоречить SRP в первую очередь. Если переиспользование функции сопровождается тем, что она обрастает какими-то входящими параметрами, позволяющими тонко отстроить ее поведение в зависимости от нужд вызывающего, то имеем буквально нарушение "Более чем одной причины для изменения" и в целом очень хрупкий алгоритм, который чуть что аффектит вообще всех. Тут уже лучше или повториться или декомпозировать логику тем или иным образом.

Сожно судить по выдранным из контекста кускам кода, но IMHO, там как раз самое место применить DRY...

Но вообще, автор бы лучше магическими строками в своём коде озадачился. А то даже в статье явная опечатка в 'orer_placed'. Наверняка, в коде консьюмера этих событий точно так же строка, но без опечатки, и вылавливать этот баг потом будут долго и весело. Я уж молчу про удивительный формат версии - строкой '1-0-0'.

Эти классы и так связаны - они отправляют что-то в кафку. Вот для генерации общей части (или структуры) сообщения и нужно использовать общий метод.

Каждый элемент информации должен иметь единственное недвусмысленное авторитарное представление в системе.

Мне это кажется абсолютно логичным. Иными словами, это значит, что ваша бизнес-логика не должна повторяться в двух местах

Вообще-то, нет, цитата не значит то, что вы написали.

В вашем примере про срок в семь дней элементом информации является значение 7 дней, которые просто должны храниться в одном месте, мастер-базе. А бизнес-логика, которая его проверяет, может быть задублирована сколько угодно раз, и в различных вариантах реализации, лишь бы она проверяла значение из мастер-системы, а не зашитое в логике. Тогда изменением срока с 7 на 5 дней можно управлять в одном месте.

А если понадобиться не просто изменить константу, а поменять саму логику?
Например, бизнес скажет, что теперь заказ истекает через семь дней только в тех случаях, если в момент его создания луна была в четвёртом доме.
И такие изменения могут происходить многократно. Поверьте мне, вы не захотите каждый раз менять это в дюжине разных мест.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий