
Doge
20.08.2018
06:08:16

アレクセイ
20.08.2018
06:08:52
а Customer это что

Doge
20.08.2018
06:09:43

アレクセイ
20.08.2018
06:09:53
а в нём нет Id?

Google

アレクセイ
20.08.2018
06:10:36
я запутался и мне не нравится ) какой-то целый партизанский отряд с предателем, там где на F# одна строчка кода.

Doge
20.08.2018
06:24:55

アレクセイ
20.08.2018
06:26:10
я в упор не понимаю, зачем это
тем более если никакого Customer у меня в поддомене нет
а вот айдишник есть

Doge
20.08.2018
06:29:13
я в упор не понимаю, зачем это
Чтобы не описывать этот тип заново для каждого необходимого типа сущности. Чтобы была возможность писать обобщенный код, в котором есть необходимость достать именно значение id.
Можно выкрутиться и с твоим вариантом, но там чуть больше телодвижений будет.

アレクセイ
20.08.2018
06:30:13
ну вот это я и имею в виду, когда говорю что С# получается не очень подходит для DDD
сделать можно всё, спору нет
но тогда и на С++ можно всё сделать

Doge
20.08.2018
06:31:20
Тут речь шла про то, как типобезопасно описывать Id.

アレクセイ
20.08.2018
06:31:57
нене, речь изначально шла о фичах c#

Google

アレクセイ
20.08.2018
06:32:14
которые асимптотически приближаются к f#
но никак не приблизятся )
с айди это лишь один из примеров

Doge
20.08.2018
06:36:42
нене, речь изначально шла о фичах c#
Ну я видимо это пропустил. Я пришел к тому моменту, когда шла речь уже про Id. И, имхо, это как раз тот случай, когда важно, чтобы описанный код обобщался и твой вариант под это не попадает.

アレクセイ
20.08.2018
06:37:49
не понимаю этот момент с обобщением. Мой вариант - попытка заменить летающие кругом примитивные типы int, string, long на что-то осмысленное и запрячь компилер помогать мне
обобщение тут каким боком?

Doge
20.08.2018
06:39:01

アレクセイ
20.08.2018
06:40:02
да почему именно Id? я ж уже писал что это частный случай. Что делать с приходящими из базы почтовыми индексами например? это не Id
или вид shareClass финансового фонда? это стринг, но я не хотел бы случайно подать туда имя юзера

Doge
20.08.2018
06:40:51

Bonart
20.08.2018
06:41:21

Doge
20.08.2018
06:41:53

アレクセイ
20.08.2018
06:41:55
три класса там где это ненужно

Friedrich
20.08.2018
06:42:27

Bonart
20.08.2018
06:42:43

Doge
20.08.2018
06:43:23

Bonart
20.08.2018
06:43:46
Штука в том, что айдишнику обычно не хватает типа сущности, на который он ссылается
Странно воспринимать его указание как недостаток
Косяк C# в том что приходится тип самого айдишника с собой таскать

Google

アレクセイ
20.08.2018
06:45:04
ну, до первого непонятного бага в продакшене

Bonart
20.08.2018
06:45:35

Doge
20.08.2018
06:45:48

アレクセイ
20.08.2018
06:46:11
ну вот это и называтся "костыли"

Bonart
20.08.2018
06:46:12

Doge
20.08.2018
06:46:30
И способности к обобщению больше.

Bonart
20.08.2018
06:46:37

Doge
20.08.2018
06:46:44

アレクセイ
20.08.2018
06:46:46
да всё можно. Можно даже зделат ьчтобы кругом летал тип Customer
надо говорить, чем это плохо?

Bonart
20.08.2018
06:47:31

アレクセイ
20.08.2018
06:48:55

Doge
20.08.2018
06:49:16

アレクセイ
20.08.2018
06:49:42
ну товарищ сказал за маркерный тип
либо я что-то не уловил?
почему не аттрибуты тогда уж?

Bonart
20.08.2018
06:50:24
либо я что-то не уловил?
Да, я сказал, что можно и не маркерный. Маркерные типы я не использую, если без них можно обойтись

Doge
20.08.2018
06:50:26

Google

Doge
20.08.2018
06:51:01

Bonart
20.08.2018
06:51:42

アレクセイ
20.08.2018
06:51:45
наверное нужны примеры кода, иначе опять не понимаю

Bonart
20.08.2018
06:53:21
Id<Customer, int> - идентификатор заказчика в виде целого числа. Данных самого заказчика в нем нет, но где-то (обычно в специальном сервисе) по идентификатору их можно получить.

アレクセイ
20.08.2018
06:53:57
почему это именно тип, а не как обычно Id<ICustomer, int>

Bonart
20.08.2018
06:55:27
Можно и Id<ICustomer, int> - фишка в том, что на тип сущности ограничений нет. Главное, что тип-идентификатор содержит явное указание на то, какую именно сущность он идентифицирует.
При этом в рантайме - это самый обычный int без оверхеда

アレクセイ
20.08.2018
06:56:12
ну это по сути и есть один из видов markerInterface

Bonart
20.08.2018
06:56:30
У меня имеют - а значит их типы маркерными не являются по построению

アレクセイ
20.08.2018
06:57:59
почему нет. Какая ответственность у этого типа (или интерфейса)? только обозначить принадлежность чего-то к чему-то. Точно так же можно было написать class Id: Customer {} где customer - тип безничего
только то что его запихали в дженерик не меняет сути происходящего

Bonart
20.08.2018
06:59:08

Vasily
20.08.2018
06:59:17
Коллеги,вы ща так до комонад договоритесь

アレクセイ
20.08.2018
06:59:23
и это... вуаля marker interface

Bonart
20.08.2018
07:01:18

Ivan
20.08.2018
07:01:48
Вот здесь можно посмотреть на NewType, NumType, FloatType. И вообще много чего приятного для функционального стиля на C#. Но все же это костыли.
https://github.com/louthy/language-ext

Bonart
20.08.2018
07:01:49
Зачем нужны сущности без типов в ООП - ХЗ

Doge
20.08.2018
07:02:09
только то что его запихали в дженерик не меняет сути происходящего
Принципиально меняет. Проблемы маркерных интерфейсов (если ты, конечно читал статью, которую сюда скинул) принципиально связаны именно с понятием интерфейса и его стандартными способами использования.
А мы говорим про отдельно стоящий тип (который в идеале нужно сделать sealed), для которого это всё не актуально.

Google

アレクセイ
20.08.2018
07:03:53
ну вот и получается огород с наследованием, sealed и прочими дровами
не нравится
f# one love ❤️

Bonart
20.08.2018
07:05:03

Doge
20.08.2018
07:05:10
f# one love ❤️
Ага, только это же может спокойно сделать и в F#, язык тут вообще не причем.

アレクセイ
20.08.2018
07:05:36
зачем? зачем это спокойно делать в f# когдатам есть алгебраические типы?
не убедили вы меня, короч )

Bonart
20.08.2018
07:05:56

『Ark』∞
20.08.2018
07:06:09

Doge
20.08.2018
07:07:01

アレクセイ
20.08.2018
07:07:24
очень шумно и геморно

Doge
20.08.2018
07:07:43
Это тот же самый вариант, что у тебя, только обобщенный.

アレクセイ
20.08.2018
07:07:58
а так-то у микрософта есть такой вариант в архитектурном туториале

Bonart
20.08.2018
07:08:04

アレクセイ
20.08.2018
07:08:47
вот официальный костыль от ms: https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/enumeration-classes-over-enum-types
чувство прекрасного СТРАДАЕТ

Bonart
20.08.2018
07:10:11

アレクセイ
20.08.2018
07:10:30
господи, почему опять Id
такое ощущение что некоторые через строчку прыгают
речь шла об алгебраических типах
которые в частности могут состоять из одной опции