![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Как известно, страшным грехом в современном программировании считаются синдром NIH, изобретение велосипедов и попытки решить уже решенные задачи, а уже нахождение новых задач - страшнейшее богохульство, на уровне осквернения могил и нежелания смотреть олимпиаду по телевизору.
В связи с этим, в своих дотнет-проектах я стараюсь использовать два стандарных инструмента: MSBuild для сборки и t4 для генерации повторяющегося кода.
Так вот, если первый всего лишь содержит мелкие странности (типа считает переменные окружения своими переменными, но не передает автоматически свои обычные переменные, если вызывает сам себя и не содержит внятных средств организации подпроцедур - т.е. области видимости переменных в нем - это ad-hoc ад писанный людьми, которые никогда не читали SICP), то второй - это теоретически правильное, но неудобное при разработке дичайшее безумие.
И я уверен, что аналогичный темплейтер, сделанный на clojure, был бы намного понятнее, нежели "готовое" решение.
В связи с этим, в своих дотнет-проектах я стараюсь использовать два стандарных инструмента: MSBuild для сборки и t4 для генерации повторяющегося кода.
Так вот, если первый всего лишь содержит мелкие странности (типа считает переменные окружения своими переменными, но не передает автоматически свои обычные переменные, если вызывает сам себя и не содержит внятных средств организации подпроцедур - т.е. области видимости переменных в нем - это ad-hoc ад писанный людьми, которые никогда не читали SICP), то второй - это теоретически правильное, но неудобное при разработке дичайшее безумие.
И я уверен, что аналогичный темплейтер, сделанный на clojure, был бы намного понятнее, нежели "готовое" решение.
no subject
Date: 2014-02-15 10:13 am (UTC)no subject
Date: 2014-02-15 10:55 am (UTC)Т.е. берем анемик класс, добавляем руками поведения в соседнем файле и все заебца.
no subject
Date: 2014-02-15 11:03 am (UTC)И чисто интересно, что за предметные области, в которых модели можно генерить, а главное что является исходником? База данных что ли?
no subject
Date: 2014-02-15 11:44 am (UTC)Исходником для t4 является сам шаблон, код типа:
FieldDesc[] fields = new FieldDesc[] {
new FieldDesc("string","Caption"),
new FieldDesc("int","Level"),
new FieldDesc("string","Reference"),
new FieldDesc("string","Default"),
new FieldDesc("string","Type")
};
Но конкретно это не объекты предметки, это всякая внутренняя хрень, типа "описание настроек полей" или прочие классы для таскания данных между частями системы, в т.ч. и через разного рода текстовые форматы.