
Roman
19.01.2018
11:14:30

Sergey
19.01.2018
11:15:09

Roman
19.01.2018
11:15:15
Нет же метрик - типа до 10k sloc это микросервис, а если больше - то пиздец

Google

Sergey
19.01.2018
11:15:52
Базворд
либо ты не разбирался в вопросе))
рекомендую два видоса:
https://www.youtube.com/watch?v=MjIfWe6bn40
https://www.youtube.com/watch?v=Fuac__g928E
SRP ты тоже так определяешь?

Roman
19.01.2018
11:19:34

Roman
19.01.2018
11:37:11
Не могу представить их как разные сущности и дать им разные определения

Aleh
19.01.2018
11:41:00

Sergei
19.01.2018
11:42:45
Обьект это не только в контексте класса и создания экземпляра класса

Roman
19.01.2018
11:44:44

Sergei
19.01.2018
11:52:28
Вот например паттерн фасад, он нужен для того чтобы скрыть детали реализации какой то подсистемы, или же другими словами уменьшить coupling этой системы с другой и увеличить cohesion, подсистема это совокупность обьектов, которая в то же время сама является обьектом. Хотя вроде бы low coupling high cohesion было о классах и обьектах, но в этом случае он тоже применим.


Артур Евгеньевич
19.01.2018
12:34:18
Парни хотелось бы послушать ваше мнение. Если вкратце, считаете ли вы что для соблдения DIP нужно все классы маркирвоать интерфейсами и считаете ли вы абстракцией публичные методы класса?
А вот полная версия. На работе случилась конфликтная ситуация(чувак уволился после двух недель работы) из за того что ему сделали много замечаний на код ревью по поводу избыточности интерфейсов. Он создал Интерфейс Point для точки на плоскости, и создал отдельные Интерфейсы для координаты X и Y. Ему написали что это лишнее, и вообще интерфейс тут не нужен, т.к не предполагаются иные реализации, а если вдруг когда то и понадобятся то тогда и можно будет выделить нужные мтеоды в интерфейс, а на данный момнет это преждевременная оптимизация. Также пытались аргументировать тем, что публичные методы класса, по сути и есть интерфейс, и ключевое слово interface не обязательно для завязки на абстракцию(кста у фаулера статья есть в которой он жалуется что слово interface крайне неудачное). Чел сказал что мы нарушаем принцип DIP и уменьшаем возможности для расширения и повторного исопльзования кода и уволился...что вы думаете по ситуации?


Adel
19.01.2018
12:35:10
не надо интерфейсов на сущности и VO.

Google

Adel
19.01.2018
12:35:52
я уже сталкивался с подобным.. это просто лишнее. у нас был проект где класс без интерфейса нельзя было создать. главный так хотел :) ничего кроме больших мучений это не принесло.
в С# это было. там все свойства приходилось копипастить из интерфейса.

Sergey
19.01.2018
12:40:24
основной вопрос когда ты применяешь DIP - это что и в какую сторону ты "инвертируешь"
если ты сделал модуль, в котором есть Point и PointInterface - то тут DIP и не пахнет ибо никакой инверсии модулей верхнего уровня не происходит
повторное использование кода - так же, это называется преждевременным обобщением
короч ты ничего не потерял, пусть оверинженерит в другом месте


Aleh
19.01.2018
12:46:51

Sergey
19.01.2018
12:47:46
ну то есть, давай так, все упирается в кохижен и каплинг)
у тебя есть объект, он должен быть кохизив а связанность должна быть снижена к максимуму (возможно путем введения новых объектов)
класс, объект в виде компьютера с приватной памытью и т.д.
самый простой способ - ограничить шаринг данных, то есть когда у тебя возникает желание достать какие-то данные откуда-то что бы что-то сделать - ударить себя по рукам и сделать это только если "ну вот никак"

Aleh
19.01.2018
12:49:34
ну я скорее про то, что объект это способ формальной записи некой ментальной модели. Т.е. мы можем что угодно представить объектом, в том числе и микросервис, и монаду, и вселенную

Sergey
19.01.2018
12:49:38
помимо "достать" еще может быть желание отправить эти данные)

Aleh
19.01.2018
12:49:50
то, что в некоторых языках там есть какой-то стейт и еще что-то, уже детали

Sergey
19.01.2018
12:50:19

Sergey
19.01.2018
12:50:31
в моем мозгу только такая аналогия более-менее укладывается

Aleh
19.01.2018
12:51:09
ну и поскольку мы моделируем что-то, то работают все принципы работы с моделями. Ограничение числа связей между разными моделями, увеличение связанности внутри модели это все не про объекты вообще, но работает в том числе и для объектов

Google

Sergey
19.01.2018
12:51:13
почему же?
Память в компьютере мутабельна. А мутабельный стейт в объектах чаще всего - проблема, чем решение.

Sergey
19.01.2018
12:51:30
ну и опять же...
тебя наверное слово "класс" смутило

Sergey
19.01.2018
12:52:13

Sergey
19.01.2018
12:52:26
посмотрю я на тебя как ты без стэйта будешь жить)
ну и всегда есть event sourcing

Sergey
19.01.2018
12:52:45

Sergey
19.01.2018
12:52:51
ну тебя же память смущает
представь себе объект "Product Price". который представляет собой некую подсистему которая хранит стоимость продуктов. В его памяти в примитивном варианте мы можем наблюдать некую коллекцию productId => price

Sergey
19.01.2018
12:53:36

Sergey
19.01.2018
12:53:50

Sergey
19.01.2018
12:54:02
так вот, посомтри на мой пример с продукт прайсом
и попробуй уловить разницу между "объектом" и "инстансом класса"

Sergey
19.01.2018
12:54:49
Я выдрал это из какого то контекста?
класс, объект в виде компьютера с приватной памытью и т.д.

Sergey
19.01.2018
12:55:17
объекты - маленькие компьютеры со своей памятью
классы - это элемент структурного программирования и он вообще не причем тут

Aleh
19.01.2018
12:55:52

Google

Sergey
19.01.2018
12:56:09
посмотри на эрланг - там нет классов но зато есть "маленькие компьютеры со своей приватной памятью"
мы ведь не за объектами/классами гоняемся. а как снизить эффетк изменений между элементами системы
и в этом ключе аналогия с маленькими компьютерами работает хорошо
а "инстанс класса" - плохо

Admin
ERROR: S client not available

Max
19.01.2018
19:50:42
Господа, день добрый. Вопрос по микросервисам.
Есть теоритическая задача - спарсить курсы валют (за n период, с сайта центробанка например), конвертировать их в csv/excel, положить на сервер в папочку (или возможно в какую бд), сервер потом отдает по soap\rest отчеты клиенту (и мб что-то от него принимает).
Вопрос: на сколько микросервисов поделится эта задача? (спарсить с ресурса, преобразовать в csv\excel, положить\достать из бд или файла).

Артур Евгеньевич
19.01.2018
19:53:30
Я бы в 1 сделал

Roman
19.01.2018
19:55:23

da horsie
19.01.2018
19:56:53
сколько микросервисов нужно чтобы вкрутить лампочку

Max
19.01.2018
19:57:04
Ок, спасибо, а в качестве примера, какую еще задачу в теории можно добавить, чтобы поделилось это больше чем на 1?

Артур Евгеньевич
19.01.2018
19:57:39

da horsie
19.01.2018
20:00:18
Нужно кино, а не одна фотография.

Adel
19.01.2018
20:02:11
нужно боооольше микросервисов! Зачем? Написать новую крутую строчку в резюме.

Max
19.01.2018
20:06:06
У меня это просто очередная классическая бессмысленная задача в универе - спарсить с центробанка курсы, оформить их в excel\csv, отдать клиенту файлик, примерно так (+ клиент еще может что-то класть сам). Хотелось попробовать сделать микросервисами, т.к. как еще учить себя чему-то новому, но раз бессмысленно - ок, благодарю за мнения.

Adel
19.01.2018
20:07:54
или макросервис :) но вообще неважно.

Maksim
19.01.2018
20:08:32
полумакросервис)
там явно задача в другом стояла) разные адаптеры, разные кросс курсы и т.д.)

Google

Sergey
19.01.2018
20:09:03

Maksim
19.01.2018
20:09:10
ну типа проявить смекалку)

da horsie
19.01.2018
20:09:13

Sergey
19.01.2018
20:09:20
на элексире

Maksim
19.01.2018
20:09:43
месье знает толк)

Sergey
19.01.2018
20:09:52
не считаю это извращением
тут хоть можно пару экторов выдумать

Maksim
19.01.2018
20:10:09
а они там нужны?)

Sergey
19.01.2018
20:10:28
нет конечно)
ну как....
у нас есть эктор который хранит курсы и эктор который парсит
по условию задачи у тебя ж источника данных два

da horsie
19.01.2018
20:11:25