Re[22]: Являются ли макросы свидетельством недостаточной выр
От: Gaperton http://gaperton.livejournal.com
Дата: 01.08.07 14:29
Оценка: :)
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, Gaperton, Вы писали:


IT>>>Хочешь я поделюсь? Последние года четыре у меня без кодогенерации не обходится ни одни проект. А ты оценишь и скажешь нужно это или нет.


G>>Конечно хочу. Только сразу предупреждаю — если ты макросами перформанс наигрываешь, то без профайлера я не смогу сказать, нужно оно или нет. Сам понимаешь. А вот если ты приведешь нечто, результирующее в заметном сокращении кода... Вот тут будет интересно.


IT>Перформанс, конечно, тоже. Как же без этого? В частности для обхода тормозов рефлекшина. Но это действительно не самое интересное.


IT>Гораздо более интересный пример можно найти здесь. Общая идея состоит в том, что для выполнения наиболее "интеллектуальной" работы достаточно описать сигнатуру метода:


IT>Есть и другие случаи применения кодогенерации, но они скорее относятся к экзотическим. Здесь я перечислил лишь то, что используется повседневно.


Ок, случай генерации связующего кода с БД — это хороший пример. Однако, хочу дать пару комментариев.

1) У тебя там применяются атрибуты. Добавление кастомных атрибутов никак не меняет синтаксис языка, и не увеличивает indirection level языковых конструкций. Применение их изолировано, и локализовано. Поэтому, моя аргументация к атрибутам не относится — кастомные атрибуты являются доброй, хорошей магией. От нее вреда практически нет. По своим свойствам, влияющим на процесс разработки и поддержки — это совсем не то же самое, что злые макросы. Это безопасная штука, и мы всеми руками голосуем за кастомные атрибуты. Впрочем, добавлять их кому попало все равно надо запретить, и любую модификацию прогонять через процесс формальных инспекций с привлечением тимлидов и ведущих спецов как инспекторов, как в той ветке в управлении проектами написано — ты ее читал. Плюс, требовать адекватной документации по атрибутам — и ее тоже инспектировать.

2) Удобный биндинг к БД — это даже более ходовая и популярная задача, чем создание парсеров. И для ее решения, так же как ex/yacc, вполне оправдано сделать внешний макропроцессор, совсем не обязательно иметь поддержку макросов в языке. Насколько я понимаю, в твоем тулките, на который ты ссылаешься, так и сделано — макросисиема там не применяется. Этой же цели, кажется, служит явский hybernate? Опять, обошлись без макросистемы. Что имеем в сухом остатке? Индустрия подверждает мой тезис о макросах, не так ли?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.