Size: a a a

Software Design/Architecture/Zen

2020 October 19

SP

Sergey Protko in Software Design/Architecture/Zen
так же советуют и дяди бобы со своими Солидами и Алистеры кокберны со своими protected variations (которые в GRASP) и гексагональными архитектурами)
источник

SP

Sergey Protko in Software Design/Architecture/Zen
если у тебя есть модуль "приложение" и есть модуль "инфраструктура" они всегда будут вместе меняться.
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Sergey Protko
есть простой способ разобраться. Задай вопрос что ты хочешь от структуры. Например вот вопросы которые у меня к структуре возникают:

- куда положить новую штуку? Вот делаю я новую фичу и мне надо куда-то файлики положить? куда? почему?
- как разобраться что есть в проекте, мол я новенький и открыв структуру проекта вижу application/domain/infrastructure/etc - круто, не оч помогает
- как обеспечить границы зон ответственности. не "слои" а именно что когда я работаю с комментами мне в целом не оч надо трогать посты или там темы. Мол представь что "разные люди за разные фичи отвечают".
- как обеспечить учет зависимостей между модулями. Как трекать кто от кого зависит. Мне надо трекать что инфраструктура зависит от домена или мне надо трекать какие фичи от каких зависят?
Не такой уж и простой :)

Идея такая: есть например Посты, Задачи, новости. У всех должны быть комменты.

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

Функционально мне кажется я правильно выделил, а дальше не очень понятно... Хотя наверное это не сильно важно как внутри
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Сергей Предводителев
Не такой уж и простой :)

Идея такая: есть например Посты, Задачи, новости. У всех должны быть комменты.

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

Функционально мне кажется я правильно выделил, а дальше не очень понятно... Хотя наверное это не сильно важно как внутри
по сути да. на верхнем уровне достаточно по функциональности разделить а внутри можно и слоями баловаться
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
Sergey Protko
если у тебя есть модуль "приложение" и есть модуль "инфраструктура" они всегда будут вместе меняться.
Типа там где более стабильные контракты, там и режем?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Dmitriy Tkachenko
Типа там где более стабильные контракты, там и режем?
ну тут важно понимать что стабильные контракты с неба не падают, это сложно их выдумать
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Спасибо за помощь! Стало чуть понятнее :)
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
Сергей Предводителев
Не такой уж и простой :)

Идея такая: есть например Посты, Задачи, новости. У всех должны быть комменты.

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

Функционально мне кажется я правильно выделил, а дальше не очень понятно... Хотя наверное это не сильно важно как внутри
один и тот же комментарий может быть привязан к посту, задаче и новости? если нет - то это 3 разные сущности. post_comment, task_comment, news_comment. можно 3 таблички делать.
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Алексей Гевондян
один и тот же комментарий может быть привязан к посту, задаче и новости? если нет - то это 3 разные сущности. post_comment, task_comment, news_comment. можно 3 таблички делать.
Нет, один комментарий привязан к одной теме. А темой может быть и задача, и новость, и пост
источник

Д

Дмитрий in Software Design/Architecture/Zen
А тема зачем?
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
т.е. у тебя single table inheritance там чтоли? что такое "тема" ?
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
задача, новость и пост - понятно, сущности. у каждой свой айди. а у темы какой айди? как темы связаны с этими 3 сущностями?) в теме 3 айдишника - задачи, новости и поста?)
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Дмитрий
А тема зачем?
считай что это айдишка + тип записи. Такая вот абстракция
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
У задачи, новости, поста будет поле темаId
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
а, ну это норм.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
у меня небыло бы даже этого - просто UUID такой же как у новости/поста/etc :)
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
в таком случае нет смысла говорить о "комменты по задаче / посту / новости". может быть в теме сколько угодно задач, постов, новостей, комментов.
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Sergey Protko
у меня небыло бы даже этого - просто UUID такой же как у новости/поста/etc :)
Точго
источник

SP

Sergey Protko in Software Design/Architecture/Zen
но и FK в базе я бы не делал - нет нужды
источник

Д

Дмитрий in Software Design/Architecture/Zen
Хм .
источник