Почему я должен использовать генераторы кода - PullRequest
28 голосов
/ 23 марта 2010

Я недавно сталкивался с этой темой и не мог понять, зачем они нужны.

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

Примеры будут отличными, и откуда я смогу изучить эту тему немного подробнее.

Ответы [ 15 ]

1 голос
/ 30 марта 2010

Существует много вариантов использования кода.

Написание кода на привычном языке и создание кода для другого целевого языка.

  • GWT - Java -> Javascript
  • MonoTouch - C# -> Objective-C

Написание кода на более высоком уровне абстракции.

  • Компиляторы
  • Специфичные для домена языки

Автоматизация повторяющихся задач.

  • Уровни доступа к данным
  • Исходные модели данных

Игнорирование всех предвзятых понятий генерации кода, это в основном перевододно представление (обычно более высокий уровень) другому (обычно более низкий уровень).Помня об этом определении, это очень мощный инструмент.

Текущее состояние языков программирования никоим образом не достигло своего полного потенциала и никогда не достигнет.Мы всегда будем абстрагироваться, чтобы попасть на более высокий уровень, чем на сегодняшний день.Генерация кода - это то, что приводит нас туда.Мы можем либо зависеть от создателей языка, чтобы создать эту абстракцию для нас, либо сделать это сами.Сегодняшние языки достаточно сложны, чтобы любой мог легко это сделать.

1 голос
/ 25 марта 2010

Я на самом деле добавляю последние штрихи к генератору кода, который я использую для проекта, на который меня наняли. У нас есть огромные XML-файлы определений, и за несколько дней работы я смог создать более 500 классов C #. Если я хочу добавить функциональность ко всем классам, скажем, я хочу добавить атрибут ко всем свойствам. Я просто добавляю его в мой код-генератор, нажимаю go и бам! Я сделал.

Это действительно хорошо, правда.

0 голосов
/ 30 марта 2010

Вот какая-то ересь:

Если задача настолько глупа, что ее можно автоматизировать во время написания программы (т. Е. Исходный код может быть сгенерирован скриптом из, скажем, XML), то то же самое можно сделать во время выполнения (т. Е. Некоторое представление этот XML может быть интерпретирован во время выполнения) или с использованием некоторого метапрограммирования. Таким образом, по сути, программист был ленив, не пытался решить реальную проблему, но выбрал легкий путь и написал генератор кода. В Java / C # посмотрите на отражение, а в C ++ посмотрите на шаблоны

0 голосов
/ 23 марта 2010

Если вам платит LOC и вы работаете для людей, которые не понимают, что такое генерация кода, это имеет большой смысл.Кстати, это не шутка - я работал с несколькими программистами, которые используют эту технику именно для этой цели.Формально LOC больше никому не платит (о чем я знаю, во всяком случае), но от программистов обычно ожидают продуктивности, а большое количество кода может заставить кого-то выглядеть продуктивно.

В качестве лишь слегка касательной точки, я думаю, это также объясняет тенденцию некоторых кодеров разбивать одну логическую единицу кода на как можно большее количество различных классов (когда-либо наследовать проект с LastName, FirstName и MiddleInitialклассы?).

0 голосов
/ 23 марта 2010

Если с генератором кода вы также намереваетесь использовать фрагменты, попробуйте разницу между вводом ctor + TAB и написанием конструктора каждый раз в ваших классах. Или проверьте, сколько времени вы зарабатываете с помощью сниппета для создания оператора switch, связанного с перечислением со многими значениями.

...