Всем привет! Хочу порассуждать над целесообразностью использования билдеров для несложных объектов.

Для упрощения буду использовать аннотации lombok’a:

Рассмотрим на простом примере:

Довольно-таки простой класс. На деле получаем иммутабельный объект, который инициализируется через конструктор.

Но, как мы видим, все поля nullable, и создание такие объектов будет выглядеть не очень красиво:

Безусловно, есть варианты:

  1. Объекты, где немного полей разных типов, можно завезти несколько конструкторов. Но это не решает проблему класса выше.
  2. Использовать setter’ы — субьективно, нагромождает код.

Мы получаем весьма элегантное построение несложного объекта:

Однако, для использования в проекте jackson’а необходимо дополнить наш класс, чтобы он успешно десериализовывался:

Получаем свои плюсы и минусы за оба подхода:

builder:

+
1. Код становится лаконичнее.
3. null в параметрах конструктора не бросается в глаза.

Я нанял КОМАНДУ СТРОИТЕЛЕЙ на 30 минут чтобы они СОЗДАЛИ Майнкрафт СЕРВЕР!


2. Меньше шанс перепутать параметры одного типа.

1. Создаем лишний объект, который GC в целом благополучно уберет, но забывать об этом не стоит.
2. При необходимости использовать jackson — нагромоздим класс.

конструктор:

+
1. Минимально нагромождает наш класс, никакой воды.
2. Нет создания лишних объектов.

1. Весьма часто в конструктор такого объекта будет прилетать null.
2. Есть вероятность ошибится, когда кто-то будет вносить изменения в код.

Итог

Опираясь на свой опыт — склоняюсь к использованию билдеров. Плата за это не высока, а на выходе имеем код, который приятно читать.

И конечно же, пишите тесты, чтобы избежать 2-го отрицательного пункта использования конструкторов.

P.S. Это моя первая статья, буду благодарен конструктивной критике и комментариям.

Источник: habr.com

Тема: Набор в команду билдеров [CivCraft]

QuantumBreak

  • Просмотр профиля
  • Сообщения форума
  • Личное сообщение
  • Репутация
Читайте также:  Хелпер в Майнкрафт что это

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