🎤 OneOf библиотечка vs обычный record
Помните я рассказывал, что есть библиотчка OneOf для симуляции Discriminated Unions и, что она, довольно таки первоклассной качества. Ну, короче, перевожу разряд качества оной во второй.
В комментах к тому посту Саша Журавлев aka @sagos95, поделился тем, что он всю эту дискриминационную петрушку делает на наследовании рекордов. И пару недель назад тут на работе тоже поделились этим лайфхаком, как все то же самое можно сделать на рекордах (пояснительный дикпик выше).
Я на выходных сел и посравнивал. Прибросил прям нос к носу оба метода на живом коде. Взвесил все плюсы и минусы и понял, что на рекордах получается круче!
🟢 В случае, если вы расширите сет выдаваемых результатов, то вам не нужно будет во всех методах бегать и прописывать дополнительный тип, как в случае с библиотечкой OneOf
🟢 Это дает чуть больше строгости в типизации возвращаемого типа: вы прямо говорите, что результат перевода вот такой и может быть одним их этих трех вариантов. То есть любой метод, возвращающий такой результат будет обяхан поддержать все три концепции. В случае с OneOf вы по сути для каждого метода создаете свой набор возвращаемых типов.
🟢 Есть только один для меня плюс у OneOf – я явно вижу все варианты, которые может вернуть метод. Но, по факту, мне это нужно редко и я бы не стал жертвовать предыдущими пунктами ради этого.
🅰️ Итого: делать вариативный возвращаемый тип на рекордах будет попервоклассней. Ну и библиотечку никакую не нужно ставить – минус одна левая зависимость. Короче, к черту этот OneOf.
Post #232
989

- 🔥 6
- ❤ 2
- 👍 2
- 🫡 2
- 👏 1