Всем привет! Хочу порассуждать над целесообразностью использования билдеров для несложных объектов.
Для упрощения буду использовать аннотации lombok’a:
Рассмотрим на простом примере:
Довольно-таки простой класс. На деле получаем иммутабельный объект, который инициализируется через конструктор.
Но, как мы видим, все поля nullable, и создание такие объектов будет выглядеть не очень красиво:
Безусловно, есть варианты:
- Объекты, где немного полей разных типов, можно завезти несколько конструкторов. Но это не решает проблему класса выше.
- Использовать setter’ы — субьективно, нагромождает код.
Мы получаем весьма элегантное построение несложного объекта:
Однако, для использования в проекте jackson’а необходимо дополнить наш класс, чтобы он успешно десериализовывался:
Получаем свои плюсы и минусы за оба подхода:
builder:
+
1. Код становится лаконичнее.
3. null в параметрах конструктора не бросается в глаза.
Я нанял КОМАНДУ СТРОИТЕЛЕЙ на 30 минут чтобы они СОЗДАЛИ Майнкрафт СЕРВЕР!
2. Меньше шанс перепутать параметры одного типа.
—
1. Создаем лишний объект, который GC в целом благополучно уберет, но забывать об этом не стоит.
2. При необходимости использовать jackson — нагромоздим класс.
конструктор:
+
1. Минимально нагромождает наш класс, никакой воды.
2. Нет создания лишних объектов.
—
1. Весьма часто в конструктор такого объекта будет прилетать null.
2. Есть вероятность ошибится, когда кто-то будет вносить изменения в код.
Итог
Опираясь на свой опыт — склоняюсь к использованию билдеров. Плата за это не высока, а на выходе имеем код, который приятно читать.
И конечно же, пишите тесты, чтобы избежать 2-го отрицательного пункта использования конструкторов.
P.S. Это моя первая статья, буду благодарен конструктивной критике и комментариям.
Источник: habr.com
Тема: Набор в команду билдеров [CivCraft]
QuantumBreak
Просмотр профиля
Сообщения форума
Личное сообщение
Репутация
Потихоньку втягиваюсь
Ваш статус Сначала захвати кофе с собой. а уж потом захватишь мир.
Сообщений 319
Cервер CivCraft
Любимые моды CivCraft (Плагин), TC6, IC2, AE2
Любимый монстр Дикарь
Текстур пак В разработке
Регистрация 04.12.2016
Адрес Гавайи
5 20.01.2013 в 21:04 .
СКОЛЬКО ЗАРАБАТЫВАЕТ БИЛДЕР? | ВАЙМВОРЛД ИНТЕРВЬЮ С БИЛДЕРОМ 1boingo | МАЙНКРАФТ VimeWorld
![]() |
![]() |
![]() |
![]() |
20.01.2013, 21:20 | #2 |
Источник: zhyk.org |