TGViewer
C# Short Posts 🔞 C# Short Posts 🔞 @dimasshortposts · 306 subscribers
Post #232 989
🎤 OneOf библиотечка vs обычный record

Помните я рассказывал, что есть библиотчка OneOf для симуляции Discriminated Unions и, что она, довольно таки первоклассной качества. Ну, короче, перевожу разряд качества оной во второй.

В комментах к тому посту Саша Журавлев aka @sagos95, поделился тем, что он всю эту дискриминационную петрушку делает на наследовании рекордов. И пару недель назад тут на работе тоже поделились этим лайфхаком, как все то же самое можно сделать на рекордах (пояснительный дикпик выше).

Я на выходных сел и посравнивал. Прибросил прям нос к носу оба метода на живом коде. Взвесил все плюсы и минусы и понял, что на рекордах получается круче!
 
🟢 В случае, если вы расширите сет выдаваемых результатов, то вам не нужно будет во всех методах бегать и прописывать дополнительный тип, как в случае с библиотечкой OneOf
🟢 Это дает чуть больше строгости в типизации возвращаемого типа: вы прямо говорите, что результат перевода вот такой и может быть одним их этих трех вариантов. То есть любой метод, возвращающий такой результат будет обяхан поддержать все три концепции. В случае с OneOf вы по сути для каждого метода создаете свой набор возвращаемых типов.
🟢 Есть только один для меня плюс у OneOf  – я явно вижу все варианты, которые может вернуть метод. Но, по факту, мне это нужно редко и я бы не стал жертвовать предыдущими пунктами ради этого.
 
🅰️ Итого: делать вариативный возвращаемый тип на рекордах будет попервоклассней. Ну и библиотечку никакую не нужно ставить – минус одна левая зависимость. Короче, к черту этот OneOf.
  • 🔥 6
  • ❤ 2
  • 👍 2
  • 🫡 2
  • 👏 1
More from @dimasshortposts
  1. Sep 26, 2026🧵 Тредик для вопросов по докладу про MAF на дотнексте В докладе многие подробности опусти…
  2. Sep 23, 2026Даже самым хардкорным ребятам надо отдыхать, так что отдыхаем, мои чюваки 🕺 🧑‍💻dp🥁 #he…
  3. Sep 16, 2026🎯 Instrumented Tier0: профилирование кода В прошлый раз мы разобрали два уровня компиляци…
  4. Sep 15, 2026🔜 Готовлюсь к DOTNEXT 2026 В прошлом году за две недели до выступления я зачитывал свой д…
  5. Sep 9, 2026C# Short Posts 🔞 pinned «🐸 О чём этот канал? Кажется, я уже достаточно давно веду этот к…
  6. Sep 9, 2026🐸 О чём этот канал? Кажется, я уже достаточно давно веду этот канальчик, и пора бы описат…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →