metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-07-19 03:24 pm

Адский холивар

На тему "зачем нужен reflection и метаданные, если все можно писать вручную в коде".
Это пиздец, граждане. Я подозревал, что есть люди абстрагированные от мира реальной разработки и его проблем, но не подозревал, что настолько.

ссылко 1
ссылко 2

[livejournal.com profile] zabivator и второй персонаж оттуда усиленно убеждают, что ничего этого не нужно, а потом комментом ниже предлагают решения, которые являются ничем иным, как закатом солнца реализацией рефлекшена и метаданных вручную.

Я тут сижу, думаю, как бы это вообще всю эту метаданную жопу вынести на уровень модели и генерить из нее код, затем мержить с написанной вручную нетривиальностью и таким образом избавится от 1000-кратного писания одного и того же кода "база данных->sqlreader->поле объекта->веб-сервис->поле объекта на клиенте->элемент гуя->поле объекта->веб-сервис->поле объекта->sqlparameter->база данных". Потому что у меня за пару дней может база на 3-5 таблиц увеличится, в каждой по 10-20 полей, и это все надо выставить юзеру на редактирование, да еще красиво, с подписями на трех разных языках и чтобы работать можно было и с мыши и с клавиатуры и чтобы не тормозило, и чтобы неправильных данных при всем желании запилить нельзя было.

А народу пофег, как я посмотрю. Нужно конфиг руками читать - читают. Понадобится изменения сделать - будут дописывать case в switch или там if/else и молиться, что остальные команды разработчиков код сохранения не поломают, и что имена будут одинаковые.

Видимо, я что-то в современной софторазработке и принятой в ней эффективности работы отдельных разработчиков не понимаю.

[identity profile] gds.livejournal.com 2009-07-19 05:17 pm (UTC)(link)
если у меня в одной программе есть тип данных "простое число" и она сохраняет значения этого типа в конфиг, а в другой программе есть возможность читать конфиг первой программы, сохраняющей некоторые простые числа в конфиг, то каким образом она, имея только конфиг (допустим, plain text или xml), 1. выведет сохранённое значение пользователю? 2. создаст новое значение этого типа? Для полноты картины можно представить, что я храню простые числа как integer, в котором запаковано представление вида 6n+-1.

Максимум, что получится, это скопировать данное значение или игнорировать его. "Получить" его для другого использования в программе -- нереально.
Всё изменится, если вместе со значением будет поставляться код для его преобразования в строку и для прочих операций, для которых не хватает битового представления. Но это уже не рефлекшн, а нечто бОльшее, требующее динамической загрузки кода, поддерживающего необходимые операции.