🦀

DSL - Domain Specific Language. В данном обсуждении под DSL понимался fluent API, который позволяет декларативно описать логику приложения. Примерами таких DSL являются: Mockito, MockMvc, Awaitility, Helidon и пр.

Были рассмотрены способы построения Easy DSL с помощью внутреннего класса и набора интерфейсов.

Также было показано как можно с помощью простого (но объемного) DSL сделать билдер для DTO с обязательными полями.

Примеры кода представлены в открытом репозитории на github.

Преимущества и недостатки Easy DSL

+ легкость чтения бизнес-логики
- сложность поддержки кодовой базы самого DSL

Сценарии использования

На основе аргументов за и против были предложены два сценария применения Easy DSL:

  1. Использование Easy DSL в движке приложения, API которого часто используется другими частями приложения, но редко меняется.
  2. Написание open-source библиотек.