Лучшая практика для написания генератора кода - PullRequest
2 голосов
/ 16 июля 2009

Я собираюсь написать приложение, которое будет использовать шаблоны состояния и команд. Штаты будут действовать как фасад командования.

Существует 7 состояний и около 50 команд, которые могут выполняться не всеми состояниями; любой метод, для которого команда не может быть выполнена, вызовет исключение, в противном случае он создаст команду, выполнит ее и вернет результат.

Поскольку существует так много классов, которые будут очень похожи, я думаю написать некоторый код для автоматической генерации кода. В Excel у меня есть матрица, в которой указано, какие состояния позволяют выполнять какие команды, и я планировал вывести ее в CSV и использовать ее в качестве основы для генерации кода.

Моя идея состоит в том, чтобы вручную написать интерфейсы, реализуемые различными классами, а затем использовать их в качестве шаблона для генератора кода.

Это хорошая идея? У кого-нибудь есть советы о том, как это сделать?

Я буду писать код на Java, однако я думаю, что основные принципы применимы к генерации кода на любом языке OO.

Ответы [ 3 ]

2 голосов
/ 16 июля 2009

Что ж, если классы действительно очень похожи, почему бы не извлечь их из общего объекта Command вместо генерации кода?

То, о чем вы говорите, похоже, является базовым механизмом правил - механизм правил, который вы создаете, - это в основном то, что выполняет каждую команду.

0 голосов
/ 16 июля 2009

Сейчас я работаю над проектом, который интенсивно использует генерацию кода для сценария подобного рода; после некоторого времени работы с сгенерированным кодом я обнаружил, что в тех случаях, когда генерация используется для предоставления большого количества кода, решение с более широким использованием универсальных типов (которые содержат повторяющиеся биты) и независимых типов функций для держать конкретную логику, фактически уменьшит количество кода для обслуживания.

В Java синтаксис для написания указателя на функцию более громоздок, чем в других языках (еще один интерфейс для реализации класса), но к тому времени, когда вы проанализировали проблему достаточно для создания шаблонов, вы выполнен упреждающий рефакторинг.

0 голосов
/ 16 июля 2009

Мы используем макросы Excel для генерации кода FSM (в C), вот так, он работает очень хорошо для нас. Я бы предложил использовать шаблоны для максимально возможного количества сгенерированного кода, чтобы другие пользователи могли изменять шаблоны в соответствии со своим предпочтительным стилем.

...