Picocog — это легкая и новая библиотека Java с открытым исходным кодом, созданная для упрощения создания программного кода.
Генерация кода — это процесс, с помощью которого исходный код может автоматически генерироваться на основе входных данных.
Генерация кода обычно работает следующим образом:
- Определите модель / используйте существующую модель.
- Опросить модель и сгенерировать исходный код
- После изменения модели обновите исходный код.
Простые старые объекты Java
Генератор кода, разработанный для использования Picocog, обычно использует модель POJO в качестве источника данных модели.
Пример модели POJO показан ниже (для краткости опущены геттеры / сеттеры).
Эта модель POJO обычно создается из следующих типов источников:
- JSON / XML / YAML / CSV
- Через запрос к базе данных
- DSL (доменные языки)
Например:
ПРИМЕЧАНИЕ . Важно, чтобы при создании модели POJO выполнялся полный набор проверок и проверялись предположения. Схема XML или реализация DSL на заказ могут обеспечить ссылочную целостность и другие проверки.
Генерация кода
Picocog излучает текст через код Java. Нет шаблонов, нет отражения, нет обработки тегов. У него три основные цели:
- Сгенерируйте чистый отступ кода легко.
- Поддержка внепоследовательного ввода строки.
- Быть легко отлаживать.
Picocog на практике
Picocog можно рассматривать как альтернативу StringBuilder, ориентированную на генерацию кода. Picocog просто пишет строки — текущий уровень отступа запоминается.
Единственный необходимый класс — это класс PicoWriter .
Нет необходимости вручную помещать отступы в строковые литералы, но необходимо пометить отступ слева и записать строки кода с помощью методов writeln_r () , writeln_l () и writeln_lr () .
Иногда бывает удобно захотеть записывать в два или более мест в документе одновременно — и эти места имеют свой собственный стек отступов. Для этого вы добавляете заполнитель с помощью метода createDeferredWriter () . Возвращенный писатель может рассматриваться как указатель на строку, в которой он был создан.
Пример использования Picocog
Исходный код генерации кода:
Сгенерированные классы
Customer.java (генерируется Picocog):
Спасаясь
Первоначальный выпуск Picocog не поддерживает текстовое экранирование. Либо напишите свой собственный экранирующий код (довольно просто), либо используйте библиотеку, такую как Commons Lang, для своих экранирующих потребностей .
Языковая поддержка
Picocog написан на Java, но может генерировать код на любом языке. Генератор кода может быть создан таким образом, что C #, Java, JavaScript и другие могут генерироваться из одной модели, включая аннотации, присоединенные к коду Java (через JSR 269).
Иногда небольшая реализация — это все, что вам нужно.
Другой не основанный на шаблонах подход к генерации кода — отличный язык xtend .
Для более глубокого обсуждения генерации кода см. Прекрасную статью Мэтью Фаулера « Генерация кода для чайников ».
Доступность
Picocog доступен сегодня на GitHub .
Picocog доступен в Maven Central по следующим координатам (jarfile также можно скачать здесь):
XML
1
<dependency>
2
<groupId>org.ainslec</groupId>
3
<artifactId>picocog</artifactId>
4
<version>1.0.2</version>
5
</dependency>