Size: a a a

F# Flood: Смак с Андреем Макаревичем

2020 March 19

SN

Shub Niggurath in F# Flood: Смак с Андреем Макаревичем
у нас подавляющее большинство случаев - это DU, в каждой ветке которого одна структура
аля
type EventData = {}
      type MyEvent = Created of EventData | Updated of EventData | Deleted of EventData
источник

SN

Shub Niggurath in F# Flood: Смак с Андреем Макаревичем
тут как бы сильно дохера шансов
источник

VS

Vasily Shapenko in F# Flood: Смак с Андреем Макаревичем
Одна и та же структура?
источник

SB

S B in F# Flood: Смак с Андреем Макаревичем
Shub Niggurath
оно там щас так и сделано, посмотри по первой ссылке
это выглядит как неплохое решение с учетом нежелания ничего делать руками. единственное, что у тебя дофига типизации, а хендлеры могли бы получать тех же dynamic'ов, если лень типизировать и сваливаться при первой же неудаче в None например. цикл до первого Some result или логгирование того, что такой-то запрос не был обработан, т.к. не нашлось хендлера.
источник

SB

S B in F# Flood: Смак с Андреем Макаревичем
если нет требований к перфомансу, то так будет проще всего
источник

R

Roman in F# Flood: Смак с Андреем Макаревичем
Shub Niggurath
у нас к сожалению выбор ограничен только ньютонсофтом. но допустим я могу запилить обобщенную сериализацию. вопрос, как дальше быть с DU? сама идея выносить поле type на уровень выше как-то не очень
По поводу ограниченности выбора — ты можешь из фшарп лу взять конвертер, а саму сериализацию так и ебошить через ньютонсофт.
источник

VS

Vasily Shapenko in F# Flood: Смак с Андреем Макаревичем
Я бы все же структуру данных поменял
источник

VS

Vasily Shapenko in F# Flood: Смак с Андреем Макаревичем
Ошибка в том , что десериализация должна быть не в рекорд
источник

SN

Shub Niggurath in F# Flood: Смак с Андреем Макаревичем
Vasily Shapenko
Я бы все же структуру данных поменял
на какую?
источник

VS

Vasily Shapenko in F# Flood: Смак с Андреем Макаревичем
Список ключ значение
источник

VS

Vasily Shapenko in F# Flood: Смак с Андреем Макаревичем
Чем жсон и является
источник

SN

Shub Niggurath in F# Flood: Смак с Андреем Макаревичем
S B
это выглядит как неплохое решение с учетом нежелания ничего делать руками. единственное, что у тебя дофига типизации, а хендлеры могли бы получать тех же dynamic'ов, если лень типизировать и сваливаться при первой же неудаче в None например. цикл до первого Some result или логгирование того, что такой-то запрос не был обработан, т.к. не нашлось хендлера.
50 строк кода с нулевой логикой для тривиального случая "жсон с 5 полями" - это "выглядит нормально"? я боюсь представить себе "ненормально", даже с опытом текущего проекта. если что, в жаве это всего лишь определение класса с нужными полями и несколько аннотаций. статических гарантий не меньше (а то и больше), чем в эфшарпе
источник

VS

Vasily Shapenko in F# Flood: Смак с Андреем Макаревичем
Соответственно сериализация и десериализация пишется руками один раз
источник

SN

Shub Niggurath in F# Flood: Смак с Андреем Макаревичем
Vasily Shapenko
Список ключ значение
и как это парсить потом? наличие ключа в жсоне в общем случае не гарантируется
источник

оГ

отец Григорий in F# Flood: Смак с Андреем Макаревичем
Vasily Shapenko
Соответственно сериализация и десериализация пишется руками один раз
потом из этого всё равно "бизнесс-рекорд" надо делать
источник

оГ

отец Григорий in F# Flood: Смак с Андреем Макаревичем
Shub Niggurath
и как это парсить потом? наличие ключа в жсоне в общем случае не гарантируется
может значения?
источник

SN

Shub Niggurath in F# Flood: Смак с Андреем Макаревичем
отец Григорий
потом из этого всё равно "бизнесс-рекорд" надо делать
рекорд - это ок. вопросы к представлению в виде DU
источник

VS

Vasily Shapenko in F# Flood: Смак с Андреем Макаревичем
Бизнес рекорд в конструктор принимает такой список
источник

SN

Shub Niggurath in F# Flood: Смак с Андреем Макаревичем
отец Григорий
может значения?
и того, и другого. жсон шлют разны системы, одни могут прислать key: null, другие могут key не прислать
значение null может быть допустимым при определенных значениях других полей
источник

VS

Vasily Shapenko in F# Flood: Смак с Андреем Макаревичем
Shub Niggurath
и того, и другого. жсон шлют разны системы, одни могут прислать key: null, другие могут key не прислать
значение null может быть допустимым при определенных значениях других полей
Это все валидация
источник