Показать сообщение отдельно
Старый 14.06.2012, 16:34   #38  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Если разработка происходит как бы "сама по себе". Не успел сказать "А", а среда уже сделала за тебя "Б", "В" и "Г". Значит, программирование идет в согласии с базовой идеей среды разработки. Ты "угадал" то, как "правильно" надо программировать в данной конкретной среде разработки.
Чтобы правильно задать вопрос, нужно знать большую часть ответа, чтобы понимать, сделала ли за тебя среда "Б", "В" и "Г", нужно банально про них знать. Мне в этом плане вспоминается пример с теми же обработчиками изменения полей. Начинающих программистов тянет напихать их на форму, кому-то хватает ума перекрывать modified() на поле datasource'а, а не на контроле - если он, к примеру, слышал про пользовательскую настройку форм и возможность добавления новых контролов, связанных с одним и тем же полем. Следующим шагом идет вынос логики в modifiedField() таблицы - это уже очень большое достижение. Но потом возникает, скажем, задача при изменении определенных полей в шапке пробрасывать их в строки - и там подтягивать связанные значения полей. Хм, это уже интереснее, потому что пробрасываться могут значения сразу нескольких полей; подождите-ка, где-то это уже было... А, в заказах же такое сделано! Сейчас посмотрим, как именно... Опа! а там, оказывается, какие-то непонятные ax-классы с вывернутой наизнанку логикой, и выходит, все потуги выноса кода в modifiedField() таблицы пошли прахом... По-моему, невозможно такое угадать, не может это прийти "само по себе": про такие вещи либо знаешь и заранее готовишься к ним, либо не знаешь и потом "огребаешь" в один прекрасный день, а до того дня среда никак тебе не намекнет, что все на самом деле надо делать по-другому.
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Насколько я понимаю, предполагалось, что "точкой входа" в любой класс в Axapta должен быть статический метод main().
По-моему, разработчики Х++ просто слишком увлекались Java
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
А что в результате сделали знатоки "теории"? Про метод main() они узнают только тогда, когда оказывается невозможным привязать класс к пункту меню.
Точно помню, что в экзамене Development Introduction есть такой вопрос. Если знатоки "теории" не сдавали базовые экзамены, зачем допускать их к разработке?..
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Никто и никогда не инициализирует объект args (если вообще про него вспоминают) передавая в метод new() параметры.
Сама по себе идея Args как универсального "транспорта" для передачи (фиксированного перечня) параметров вызываемому объекту приложения имеет свои ограничения, которые наиболее ярко проявляются как раз-таки в классах. Где-то числовые параметры передаются через строковый parm(), а где-то и вовсе через parmObject() передается ссылка на объект со всей необходимой информацией, которую не удалось "запихнуть" в свойства Args. К тому же, для наследников RunBase метод main() традиционно вызывает prompt(), который при вызове класса из кода оказывается ну совсем не кстати, поэтому в коде вызовы main(args) класса скорее - дурной тон (если уж надо что-то интерактивное запустить, для этого есть MenuFunction).
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
В общем случае, найти в коде, каким же образом инициализируется и запускается тот или иной класс - это всегда проблема. Каждый разработчик выдумывает что-то свое. Особенное. В соответствии со своим пониманием того, "как правильно".
Если разработчик не пренебрегает модификаторами доступа (public/protected/private) и придерживается контрактного подхода, то обычно все не так плохо
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
условно говоря, программист - это водитель автомобиля, а вовсе не механик. Он должен знать правила (приемы) управления автомобилем, а не то, как "расточить гильзы" или "продуть свечи"
Дырявые абстракции зачастую заставляют "лезть под капот"...
За это сообщение автора поблагодарили: Pustik (5), kALVINS (3).