🦀
DSL - Domain Specific Language. В данном обсуждении под DSL понимался fluent API, который позволяет декларативно описать логику приложения. Примерами таких DSL являются: Mockito, MockMvc, Awaitility, Helidon и пр.
Были рассмотрены способы построения Easy DSL с помощью внутреннего класса и набора интерфейсов.
Также было показано как можно с помощью простого (но объемного) DSL сделать билдер для DTO с обязательными полями.
Примеры кода представлены в открытом репозитории на github.
Преимущества и недостатки Easy DSL
+ легкость чтения бизнес-логики
- сложность поддержки кодовой базы самого DSL
Сценарии использования
На основе аргументов за и против были предложены два сценария применения Easy DSL:
- Использование Easy DSL в движке приложения, API которого часто используется другими частями приложения, но редко меняется.
- Написание open-source библиотек.