![[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 09:44 am (UTC)no subject
Date: 2014-02-15 10:01 am (UTC)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")
};
Но конкретно это не объекты предметки, это всякая внутренняя хрень, типа "описание настроек полей" или прочие классы для таскания данных между частями системы, в т.ч. и через разного рода текстовые форматы.
no subject
Date: 2014-02-15 09:51 am (UTC)no subject
Date: 2014-02-15 10:04 am (UTC)no subject
Date: 2014-02-15 10:23 am (UTC)no subject
Date: 2014-02-15 09:54 am (UTC)no subject
Date: 2014-02-15 10:04 am (UTC)no subject
Date: 2014-02-15 10:20 am (UTC)T4 в таком ракурсе предстает уже ошибкой третьего порядка - сначала менеджеры-идиоты придумали шаблонизаторы, потом воспитали себе юнитов-дебилов-программистов, которые потом сделали T4 по образу и подобию шаблонизаторов html для юнитов-дебилов, сделанных по ошибке менеджерами-идиотами.
no subject
Date: 2014-02-15 11:12 am (UTC)no subject
Date: 2014-02-15 11:33 am (UTC)no subject
Date: 2014-02-15 11:38 am (UTC)no subject
Date: 2014-02-15 11:44 am (UTC)По факту всегда образуется слой-обертка над этими всеми div-ами и span-ами, и зачем и что в шаблонах надо писать близко к тексту становится совсем непонятно.
no subject
Date: 2014-02-15 11:56 am (UTC)no subject
Date: 2014-02-15 12:03 pm (UTC)no subject
Date: 2014-02-15 12:06 pm (UTC)no subject
Date: 2014-02-15 12:11 pm (UTC)no subject
Date: 2014-02-15 10:01 am (UTC)no subject
Date: 2014-02-15 10:13 am (UTC)