Pull to refresh

Comments 23

В каждой достаточно сложной системе реализована с нуля половина LISP'а.
спасибо, отличное описание
читал где-то, что первоначально, T4 использовался для внутренних нужд Microsoft. Но технология вышла очень удачной и ее открыли всем.
А есть ли шаблон для генерации бизнес-объектов? Ну чтобы автоматом генерировалась поддержака интерфейсов IEditableObject, IRevertibleChangeTracking и INotifyPropertyChanged? Написать универсальное решение без рефлексии не получится, а самому копипастить не хочется.

Я конечно однажды такой шаблон сам напишу, но всё ещё надеюсь найти уже готовый.
всегда интересовала тема кодогенерации. Во времена DOS когда я писал на FoxPro я для себя написал кодогенератор на основе описания структуры базы данных и был просто в восторге когда мне макрос сгенерировал код в сотню строк для поддержки переноса данных из одной базы данных с 4-мя связанными таблицами в другую. С использованием кодогенерации количество ошибок в моем проекте тогда резко упало и не удивительно, ведь мне достаточно было подправить макрос генератора, чтоб исправить ошибку во всех местах где он использовался.

Подобную описанной в топике систему я делал для Delphi подручными средствами, с использованием WSH и Javascript. Просто подключил написанный скрипт как внешний инструмент через меню, а он обрабатывал открытый в редакторе файл. Даже был случай когда скриптом сгенерировал код на основе Эксел-таблицы с большим количеством определений.

То что есть такой штатный инструмент — это просто здорово.
все таки, мне кажется, кодогенерация — не есть хорошо, а скорее недостаток business фреймворка и т.п., по идее ведь наследования должно хватать, неужели DevForce и StrataFrame тоже кодогенерят? XAF? да еще и в таких количествах как для CSLA, но используем, то что есть и зарекомендовало себя, как индикатор — dice.com
так то даже штатный редактор WinForms генерит
наверно, в business frameworks для ОО СУБД такого нет?
достаточно однажды обозначить сущности

DevArt Entity Developer для NH радует, делает сказку былью :) хотя бы через генерацию где-то там в фоне
еще бы шаблоны CSLA прикрутить
T4 — а название похоже дали, глядя на аналогиичный инструмент — M4
а как M4 расшифровывается?

* T4 — это Text Template Transformation Toolkit
m4 — от слова macro: m и еще 4 буквы
Спасибо автору за обзор.
Просто был у меня проект, в котором у бизнес объектов было по десятку, а то и больше, свойств, да и самих объектов было не мало. В результате приходилось писать кучу строк однообразного кода. Знать бы в то время, что есть такая полезная вещь — жить было бы гораздо проще :)
Довольно интересный обзор.
А чем принципиальным T4 отличается от R#? Только тем, что в T4 код генерируется уже при сохранении шаблона *.tt? Или T4 просто облегчает труд и все?
Интересный обзор. У MicroSoft мощная среда разработки что и говорить.
А для других языков кто небудь встречал кодогенераторы.
Например perl/python/php?
Спасибо за обзор. Интересно было бы узнать, как сынтегрировать T4 в свой проект и генерировать файлы, когда заранее неизвестно их количество (прослойка к базе, например).
о!
скоро в сш появятся нормальные compile time шаблоны. здравствуйте, статический полиморфизм и с++ :)

а вообще, если честно, выглядит как попытка «обойти» либо архитектурные сложности, либо неправильный выбор языка.
Взрослый MDA+code generation выглядит на порядок красивше имхо.
Большое спасибо автору. Раньше я использовал для генерации кода собственные программки, которые запускались посредством MSBuild, а с T4 так извращаться не нужно.
Спасибо! Очень круто. Для этих нужд нами были были написаны две шарповые и одна перловая утилиты. Жаль, раньше не откопали.
глаза лопаются от всех этих бесконечных выводимых "\t\t\t\t".

Это не MS виноват, это в вашем шаблоне текст так забит, а генератор ничего не трогает. Если вы вставили несколько знаков табуляции, так и будет.
Sign up to leave a comment.

Articles