Генерация кода (Java/C#). Поделитесь опытом.

Рейтинг: 5Ответов: 2Опубликовано: 09.04.2011

Возникла необходимость использовать генератор кода. Предположительно нужно будет генерировать код на Java и/или C#. Генерировать хотелось бы на основе UML-диаграмм + каких-то шаблонов на простом языке. Обнаружилось довольно-таки много различных генераторов, которые в том или ином объеме решают задачу. Чтобы было понятнее, о чем речь, в качестве примера можете посмотреть генератор Agile Platform. Прошу тех, кто использовал подобные генераторы, поделиться впечатлениями. Предлагаю такой формат:

  1. Название генератора.
  2. Удобство в использовании.
  3. Экономия времени (по сравнению с написанием кода вручную).
  4. Расширяемость (интересует в первую очередь, можно ли генерировать код на своих языках путем описания их синтаксиса).
  5. Краткое описание впечатлений (в двух словах!).

Большая просьба не превращать в обсуждения типа "генерация кода: хорошо это или плохо?". Интересует мнение тех, кто использовал генераторы на практике или хотя бы в свое время с ними ознакомился. Спасибо.

Ответы

▲ 5

У нас есть кодоген из java классов в c++ и c# + второй кодоген джавы по джаве.

Основные мысли

  • Писать только самому, потому что саппорта и маленьких "рюшечек" кодоген требует немало.
  • Если у вас зоопарк языков и сред - кодогенить лучше всего на основе стороннего описателя, например xml файлика.
  • Через 3 дня у вас конечно всё заработает в основном... Но ещё 3 недели надо будет потратить чтобы покрыть все исключения :)
  • Кодоген это добро! И чем больше проект тем большее это добро. На одном из прошлых проектов кодоген у нас появился когда нас было всего трое и кода было не больше 30к строк. Уже тогда он помогал здорово.
  • Ну и правила написанные кровью:
  • КОДОГЕН ДОЛЖЕН БЫТЬ ДЕТЕРМЕНИРОВАННЫМ. По одинаковым файлам результат должен быть одинаков до байта.
  • КОДОГЕН ДОЛЖЕН БЫТЬ ПОКРЫТ ТЕСТАМИ НА 100%.
▲ 1

Кодогенератор у нас свой (только не по UML, а по схеме БД). Если на заморачиваться с CodeDOM (чтобы сделать генератор независимым от языка программирования), пишется довольно быстро. Тупой генератор кода по схеме БД пишется где-то полдня. Навороченный, с возможностью тонкой настройки маппинга (наследование, енумы, пространства имён с разными префиксами, переопределение свойств физических объектов БД) - дня три.