
Sergey
11.09.2018
23:49:38
что такое orderProfit

Dmitry
11.09.2018
23:50:07
слои это лож
тортик ложь да в нём намёк (на группировку объектов и зависимости)

Konstantin
11.09.2018
23:50:13

Sergey
11.09.2018
23:50:35

Google

Sergey
11.09.2018
23:51:00
если у тебя больше десятка файлов - "слои" плохая идея для формирования структуры кода

Konstantin
11.09.2018
23:51:03
Я накидывал лиж бы быстрее сделать, для себя. Но хочу красиво, а как незнаю ((

Sergey
11.09.2018
23:52:50
хз, это надо смотреть что умеет квери билдер твоего любимого yii
скорее всего не очень много

Konstantin
11.09.2018
23:53:10
да это построитель запросов, ОРМ
ничего он толком не умеет, Если что-то сложное, проще ручками

Sergey
11.09.2018
23:54:05
1. построитель запросов это НЕ ORM. Это две разные концепции. ORM может быть и Без "строителя запросов"
2. я прекрасно знаю что это такое - я к тому что тебе по сути над ним нужно свой билдер замутить под свою задачу.

Dmitry
11.09.2018
23:55:05

Konstantin
11.09.2018
23:55:55
Здесь ОРМ строит запрос, ну по факту это экземпляр класса, который особо ничего не умеет, так. Небольшие запросики. Если говорить о чём то серьъёзном(под серъёзным я понимаю это работа с типами POINT в геометрии и так далее) то он не умеет

Sergey
11.09.2018
23:56:15
короч сами сражайтесь и сами гуглите

Google

Konstantin
11.09.2018
23:57:50
билдер я иммею ввиду

Sergey
11.09.2018
23:58:30
да, слова они нужны просто так. И смысл их вообще не важен. Пойду попью чай (я просто так кофе привык называть)

Konstantin
11.09.2018
23:59:03

Dmitry
12.09.2018
00:01:34

Sergey
12.09.2018
00:04:13
типа... ложить рядом то что меняется вместе, ложить раздельно то что меняется раздельно
это все приводит к структуре где пакеты это фичи или хотя бы контексты какие-то. Между ними будут зависимости но их должно быть сильно меньше. И ты заинтересован в уменьшении связанности фич настолько, насколько это возможно. Как никак, разруливание зависимостей в требованиях и конфликты между фичами - это пожалуй самая жирная причина по которой затягиваются сроки и расттет стоимость разработтки + причина регрессий


Denis
12.09.2018
00:14:51
Да слои это такая вещь, которая должна появляться сама собой

Sergey
12.09.2018
00:15:02
как выражается "появление" и что всетаки такое слой?)


Dmitry
12.09.2018
00:15:21
может я просто не подошёл к черте за которой начинается взрывной рост зависимостей.
сейчас у меня десяток объектов в домене, десяток моделей. столько же мэпперов и по два сервиса-репозитория.
т.е. в домене десять связанных объектов и в моделях десять.
а домен связан с базой только одной связью сервис - репозиторий
но при этом сервис знает про все модели базы. если это тоже считать связью, то их, действительно, получается много.
а разные модели с одинаковым id — это когда одна и та же запись из базы по связям дублируется в объектах?
нарвался на такое. решилось кэшем уже смапленных записей
про уменьшение связанности — логично. это и тестировать удобней.
с другой стороны, при разделении по слоям — тоже можно сделать, чтобы тестировать удобно
а как называется такой фич-ориентированный подход?
и, кстати, после разбиения по фичам в каждой фиче не появятся локальные маленькие слои?

Sergey
12.09.2018
00:16:09


Konstantin
12.09.2018
00:16:34

Dmitry
12.09.2018
00:17:01
м… а микросервисная архитектура — это про это?

Sergey
12.09.2018
00:17:03
> с другой стороны, при разделении по слоям — тоже можно сделать, чтобы тестировать удобно
в целом ты можешь тестировать доменную логику в отрыве от всего (просто потому что у этого слоя не будет зависимостей от других слоев, в этом фишка), но вот все остальные слои отдельно тестировать проблематично

Denis
12.09.2018
00:18:30
Ну вот например если ты пишешь на фп языке, то ты по итогам всегда сможешь в конце разделить что есть какой «слой». Потому что там на уровне типов то что взаимодействует с сетью не может взаимодействовать с логикой напрямую. Пишешь код как обычно, а потом можно нарисовать эти 3 слоя и разместить названия функций, и все функции будут четко в этих слоях

Sergey
12.09.2018
00:18:33
м… а микросервисная архитектура — это про это?
нет, микросервисная этот все то о чем я говорил + децентрализация и возможностьт независимого деплоя "фич". Микросервисная архитектура это... эдакий способ энфорсить вот те идеи о которых я писал выше + бонусы вроде "а вот тут мы напишем на го". Однако основная их задача все же независимый цикл разработтки/деплоя. И нужно это когда у тебя появляются с эттим проблемы

Dmitry
12.09.2018
00:18:37
чую, что по метрики будут очень деморалищующими

Google

Sergey
12.09.2018
00:19:24

Denis
12.09.2018
00:19:34
Да

Konstantin
12.09.2018
00:19:56

Sergey
12.09.2018
00:20:14
отказоустойчивость и с монолитами хорошо работает.

Denis
12.09.2018
00:20:39
Поэтому я и говорю, что оно по итогам-то ляжет в эти слои, но изначально на это опираться не думаю что стоит)

Sergey
12.09.2018
00:20:51
с микросервисами у тебя просто отказоустойчивость начинает сильно важной быть
это как переход от просто децентрализованной системы к распределенной
много боли, слез и хайпа
хато можно потом на митапах и конфах выступать типа "как мы запихнули все по докер контейнерам и называем это микросервисной архитектурой"

Konstantin
12.09.2018
00:22:20

Sergey
12.09.2018
00:22:28
давно к слову не скидывал видос на эту тему: https://www.youtube.com/watch?v=Fuac__g928E
там и про слои чуть-чуть шуткуют

Dmitry
12.09.2018
00:26:19
м… если я хочу про слои — могу глянуть Фаулера. если про микросервисы — можно в интернете нагуглить.
но ведь ты говоришь про некий микс… а по каким словам его икать?
или можно читать про микросервисы, но держа в голове, что это всё без децентрализации

Sergey
12.09.2018
00:32:18
что до слоев - моя мысль на данный моментт такая - слово Layer можно спокойно заменить на Concern и смысл не меняется. но только если ты используешь Concern то оно меньше как-то просится влиятьт на структуру кода твоего проекта)
разделение на эти самые консерны важная штука, но повтотрюсь - это мало относится к структурированиюю проекта на пакеты

Дмитрий
12.09.2018
00:42:46
Фаулер кстати упоминал, что слои не первичны, слои присутствуют у уже разделённого на секции приложения

Denis
12.09.2018
01:02:02

Google

Дмитрий
12.09.2018
01:05:29

Denis
12.09.2018
01:06:06
В этом плане мне кажется там всё намного более прозрачно, с ООП в здравом уме можно вакханалию городить всё равно, всё как-то расплывчато
Ну либо у меня деформация уже какая-то, я после клинкода был уверен, что с ООД всё вообще понятно, а щяс возвращаясь в эти диалоги понимаю что тут постоянно бурление по мелочам
Структуру папок обсуждают, когда её можно поменять полностью за 20 минут

Дмитрий
12.09.2018
01:09:49
Понятие ооп вообще фигово формализовано, поэтому это просто набор. индивидуальных случаев

Sergey
12.09.2018
01:10:42

Дмитрий
12.09.2018
01:10:47

Sergey
12.09.2018
01:11:03
особенно если когда я говорю "ООП" я имею ввиду не говно с классами а эктотры больше, но это другая история.

Denis
12.09.2018
01:11:29

Sergey
12.09.2018
01:11:30
просто в некоторых случаях после этотго не все будет работать ;)

Denis
12.09.2018
01:13:07
Идея вроде норм справляется, почти не было проблем
А если и были то поправить не сложно было

Дмитрий
12.09.2018
01:14:17

knopkod4v
12.09.2018
08:58:08

Артур Евгеньевич
12.09.2018
09:01:11
Это одни и те же принципы только на разных уровнях архитектуры
т.е если single responsibility обычно про один класс/компонентик то Separation of concern это более высокий уровень абстракции, что то по типу модулей целой системы

Sergey
12.09.2018
09:06:43
SRP спокойно ложится на любой уровень

Aleh
12.09.2018
09:07:13

Google

Ivan
12.09.2018
09:08:37
Эта картинка лучше.

knopkod4v
12.09.2018
09:11:46

Aleh
12.09.2018
09:12:53

knopkod4v
12.09.2018
09:12:59
мне так-то кажется, что это тот самый случай, когда принцип переизобрели

Aleh
12.09.2018
09:13:26

Sergey
12.09.2018
09:15:07
ну в целом основопологающие принципы структурного дизайна типа coupling/cohesion, SoC и т.д. просто подаются под новым соусом. Например Information Hiding -> low Coupling Hight Cohesion -> SRP + OCP -> Protected Variations (факт, Кокберн говорил что просто не знал про OCP) -> Connascence

Дмитрий
12.09.2018
09:17:09
time is a flat circle

Sergey
12.09.2018
09:17:16
fat circle

Roman
12.09.2018
09:17:56
time is a donut

Sergey
12.09.2018
09:19:11
https://cdn.skim.gs/image/upload/b_rgb:FFFFFF,bo_1px_solid_rgb:EDEDED,c_pad,f_auto,fl_lossy,h_382,q_auto,w_682/homer-simpson-doughnuts

knopkod4v
12.09.2018
09:24:47

Sergey
12.09.2018
09:25:52
нет
потому что структурное программирование и потому что goto considered harmful

F01134H
12.09.2018
09:38:10
Ladies ang gentlemans
А что вы юзаете для ревью? Ну т.е. нужно же пометки делать где что исправить
может есть какой то спец софт
Ой, кажется оффтоп

Oleg
12.09.2018
09:57:04
На гитхабе в репе пр открываешь и ревьювишь)