Size: a a a

Software Design/Architecture/Zen

2021 February 15

YG

Yury Golikov in Software Design/Architecture/Zen
Segmentation Fault
Требования задает ПО словами, зачастую описывает сценарии даже упомниая такие фразы: "взять данные оттуда", "сохранить там-то", "отправить уведомление" и тд. Мы с ним разумеется использум одинаковые термины. Но реализации прячем за интерфейсами. Наверное поэтому сложно понять что именно бизнесс логика, потому что кажется, что она повсюду.
Поэтому я не пытаюсь понять где бизнес-логика, а где нет. Я просто стараюсь делить по ответственности.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Segmentation Fault
Вот я сейчас примерно так и делаю, пытаюсь в DDD, но выходит противоречиво. У меня есть домен, состоящий из сервисов, сущностей (+ VO) и там же интерфейсы репозиториев. А есть сервисы приложений (для аутентификации, рассылок и еще чего-то). И непонятно куда поместить интерфейсы репозиториев необходимые для сервисов приложений. Реализация лежит в инфраструктуре...
реализация чего? сервисов приложения наприимер?
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Max Grom
Я ж потому и говорю, не парьтесь, что не всё идеально. PO использует это потому что хочет лучше детализирвоать для вас что к чему. Это встречается очень часто и очень мало PO умеют или имеют возможность в вычленение бизнес-процесса, способность его осознать/описать/презентовать и дать задачи в формате as-is -> to-be для этих изменений не пытаясь навязать вам реализацию
В любом случае декомпозируем и планируем всё сами, командой, разбивая на подзадачи и тп. И иногда не можем понять что куда...
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Sergey Protko
реализация чего? сервисов приложения наприимер?
Реализация репозиториев
источник

YG

Yury Golikov in Software Design/Architecture/Zen
Segmentation Fault
Вот я сейчас примерно так и делаю, пытаюсь в DDD, но выходит противоречиво. У меня есть домен, состоящий из сервисов, сущностей (+ VO) и там же интерфейсы репозиториев. А есть сервисы приложений (для аутентификации, рассылок и еще чего-то). И непонятно куда поместить интерфейсы репозиториев необходимые для сервисов приложений. Реализация лежит в инфраструктуре...
Вот инфраструктура тоже непонятная имхо херня. Похоже на пакет util из джавы)
источник

SP

Sergey Protko in Software Design/Architecture/Zen
хз, я забил на слои и живу счастливо)
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Yury Golikov
Вот инфраструктура тоже непонятная имхо херня. Похоже на пакет util из джавы)
Нет, они имеют состояние и поведение)
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Segmentation Fault
Нет, они имеют состояние и поведение)
все имеет состояние и поведение. Это не отличительная характеристика.
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Yury Golikov
Вот инфраструктура тоже непонятная имхо херня. Похоже на пакет util из джавы)
А можете показать структуру проекта? Очень интересно
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Sergey Protko
все имеет состояние и поведение. Это не отличительная характеристика.
java util нет (если верить ЕГОРУ)

ПС: на java не пишу, но понимаю о чем он говорит в своих спичах
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Yury Golikov
Вот инфраструктура тоже непонятная имхо херня. Похоже на пакет util из джавы)
есть оч большая разница.

utils - это про coincidental cohesion. Просто "хуй знает куда положить"
infrastructure - это уже про logical cohesion. "все что про инфраструктуру сваливаем сюда".

И то и то оч низкий кохижен но у infrastructure он чуть выше)
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Sergey Protko
есть оч большая разница.

utils - это про coincidental cohesion. Просто "хуй знает куда положить"
infrastructure - это уже про logical cohesion. "все что про инфраструктуру сваливаем сюда".

И то и то оч низкий кохижен но у infrastructure он чуть выше)
Ну вот это проблема общего дизайна раз такие классы появляются
источник

YG

Yury Golikov in Software Design/Architecture/Zen
Sergey Protko
есть оч большая разница.

utils - это про coincidental cohesion. Просто "хуй знает куда положить"
infrastructure - это уже про logical cohesion. "все что про инфраструктуру сваливаем сюда".

И то и то оч низкий кохижен но у infrastructure он чуть выше)
Ну я про то, что туда сваливают обычно все то, что не попало в другие места. Пакет/папочка infrastructure - обычно такое себе
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Yury Golikov
Ну я про то, что туда сваливают обычно все то, что не попало в другие места. Пакет/папочка infrastructure - обычно такое себе
Мы туда кладём исключительно реализацию походов во внешние штуки (базы данных, api, кэши и тп), не более
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Главное что надо уяснить что "слои не папки".

App
| - Auth
   | - Credentials
   | - AuthController
   | - CredentialsRepository
   | - HybernateCredentialsRepository
   | - OpenIDClient
| Shipment
   | -
| Platform
   | - пафосное название для "инфраструктуры" которая общая для всех контекстов
источник

YG

Yury Golikov in Software Design/Architecture/Zen
Segmentation Fault
А можете показать структуру проекта? Очень интересно
В текущем проекте все печально. По сути
controller
service
repostiory
dto
email
security
exception
и тд

Но благо слабосвязанные вещи разнесены по модулям. Те примерное каждый модуль состоит внутри из такого
источник

SP

Sergey Protko in Software Design/Architecture/Zen
главное что бы в пределах одного файла* слои не перемешивались а внутри пакета - пжалуста
источник

SP

Sergey Protko in Software Design/Architecture/Zen
слои вритуальный концепт который нужен только что бы объяснить людям концепцию разделения ответственности. Не надо переносить ее на структуру проекта. Лучше дробить структуру по фичам. Это позволит лучше понимать у каких фич от каких зависимости и в целом как оно там все устроено. Сваливая все по "слоям" ты теряешь огромное количество полезной информации относительно того как чего в проекте устроено. Ну а "профит" от подобного разделения обычно только в том что "не надо думать куда что положить". Не считаю это плюсом
источник

YG

Yury Golikov in Software Design/Architecture/Zen
Sergey Protko
Главное что надо уяснить что "слои не папки".

App
| - Auth
   | - Credentials
   | - AuthController
   | - CredentialsRepository
   | - HybernateCredentialsRepository
   | - OpenIDClient
| Shipment
   | -
| Platform
   | - пафосное название для "инфраструктуры" которая общая для всех контекстов
Ну вот utils это тоже по сути что-то общее для всех контекстов.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Yury Golikov
Ну вот utils это тоже по сути что-то общее для всех контекстов.
да но platform team звучит лучше чем util team :)
источник