AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.11.2013, 08:50   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Pustik Посмотреть сообщение
Вопрос, значит, стоит в том, насколько глубоко программисты знают все существующие функции(ну или BP, кому как угодно).
Не нужно знать наизусть сигнатуры всех функций, чтобы быть успешным программистом, так же как и не нужно знать значения всех констант чтобы считаться хорошим физиком. Нужно знать о существовании и назначении константыфункции, а конкретный способ её использования всегда можно подсмотреть в справочнике.

Цитата:
Сообщение от ax_mct Посмотреть сообщение
Да если recepientPhone() возвращает maskPhone то это гениальный код
Тогда автор - злой гений, очень злой
Старый 28.11.2013, 09:34   #2  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Я думаю, каждый из нас встречает такой быдолкод.
Не могу не поделиться.
X++:
void MaterialProcess(afcProdmaterial _Material, int lineNo)
{
    RouteJobType         _JType;
    boolean             ppoOkToProcess = true;
    ;

    materialProcessError = false;

    if (_Material.JobType == 'Setup')
                            _JType = str2enum(RouteJobType::Setup,_Material.JobType);
                        else
                           _JType = str2enum(RouteJobType::Process,_Material.JobType);

                try
                {
                    ttsbegin;

                    lineNo += 1;
                    _progress.setCount(lineNo);
                    _progress.setText(_material.RefNoID);

                    _JobId      = this.GetJobNum(_Material.RefNoID,_JType, _Material.OprNum,RouteOprPriority::Primary, _Material.ItemId);

                    if (_Material.LotNum != '')
            _Batch      = this.CheckBatchId(_Material.LotNum, _Material.ItemId,_Material);

        if (_material.TranType == 'OFF-FIN' && _material.SerialNum && _material.PQty > 0)
        {
            if (!ppoProdMatlTrace::findSerialNum(_material.SerialNum).Ply)
            {
                ppoOkToProcess = false;
            }
        }

        if (ppoOkToProcess)
        {
                    if(this.PostMaterial(_Material))
                    {
                        _Material.inventDimId   = _dimId;
                        _Material.ProcessedFlag = NoYes::Yes;
                        _Material.update();
                    }
                    else
            {
                throw(error("Update cancelled."));
            }
        }
                    ttscommit;
                } //try
                catch (Exception::Deadlock)
                {
                   // ttsabort;
                     retry;
                   // _material.HasError = noYes::Yes;
                   // _material.update();
                }
                catch (Exception::Warning)
                {
                    ttsabort;
                   // retry;
                    _material.HasError = noYes::Yes;
                    _material.update();
                }
                catch (Exception::Error)
                {
                    ttsabort;
                   //retry;
                    _material.HasError = noYes::Yes;
                    _material.update();
                }
}
Начиная с элементарной разметки кода и неверного использования нижнего подчеркивания в обоих декларациях (как параметров, так и локальных переменных), заканчивая странным сравнением со строками, +=1 и ненужными if-ами. Зато код работает!!!)))
__________________
// no comments
Старый 28.11.2013, 16:01   #3  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от dech Посмотреть сообщение
Я думаю, каждый из нас встречает такой быдолкод.
Не могу не поделиться.

Начиная с элементарной разметки кода и неверного использования нижнего подчеркивания в обоих декларациях (как параметров, так и локальных переменных), заканчивая странным сравнением со строками, +=1 и ненужными if-ами. Зато код работает!!!)))
Самое главное не трогать и не улучшать такой код.
Во первых это может быть кривой костыль для кривого стола - выпрямите все со стола полетит.
Во вторых, кто последний трогал - тот и виноват Я дошел до того что делаю переключатели чтобы при тестировании можно было перейти на предыдущую версию кода так как очень часто старый код даже не тестировали толком и все чужие баги могут стать твоими.
Старый 28.11.2013, 18:51   #4  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Не нужно знать наизусть сигнатуры всех функций, чтобы быть успешным программистом, так же как и не нужно знать значения всех констант чтобы считаться хорошим физиком. Нужно знать о существовании и назначении константыфункции, а конкретный способ её использования всегда можно подсмотреть в справочнике.

Тогда автор - злой гений, очень злой
Вы забыли о времени. Представьте, чтобы вы делали не будь у вас интернета, msdn и т.д.?Я не говорю о том, что нужно наизусть запоминать все функции и т.д.. Я просто сказал, что напомнило..Все равно, основные и простые вещи нужно держать в голове. На худой конец, если есть мозги, на этих простых вещах можно самому написать более сложную. Если проводить аналогию с геометрией, то аксиомы знать просто необходимо. "Теоремы" можно настроить самому.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 28.11.2013, 20:23   #5  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Представьте, чтобы вы делали не будь у вас интернета, msdn и т.д.?
Я бы еще предложил отключить электричество чтобы так сказать проверить программиста в настоящих боевых условиях

Представил, мой ответ - не программировал бы так как музыку с youtube слушать бы не мог
За это сообщение автора поблагодарили: Pustik (2).
Старый 29.11.2013, 00:51   #6  
handy-comp is offline
handy-comp
Участник
 
96 / 78 (3) ++++
Регистрация: 27.09.2012
Не хотел писать, но раз уж эта тема нашла столько откликов...
Понятно, что у нас у всех свое представление о правильном коде и его красоте, своя методика создания это самого кода, свой взгляд на оправданность применения copy-paste (а именно он скорей всего тут и использовался).
Но я один не понимаю, как можно было это пропустить на первичном тестирование, неужели самому автору не интересно было проверить это в работе, не понимаю...
Старый 29.11.2013, 02:20   #7  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от handy-comp Посмотреть сообщение
Но я один не понимаю, как можно было это пропустить на первичном тестирование, неужели самому автору не интересно было проверить это в работе, не понимаю...
Легко. Это же AX. Данный код может и не вызывался ни разу, просто недоделанный мусор. А автора завалили очередью задач и ему было уже ничего не интересно
Часто код реально тестируется после полугода его написания. Уж что что а с тестированием просто полная беда.
Нормальный код, нормальный так как читаем и понятен. А то что если вдруг с багом так легко починить.

Последний раз редактировалось ax_mct; 29.11.2013 в 02:27.
Старый 29.11.2013, 08:56   #8  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от Pustik Посмотреть сообщение
Вы забыли о времени. Представьте, чтобы вы делали не будь у вас интернета, msdn и т.д.?
Раньше в России практически нигде не было интернета, лишь единицы, обладающие модемом на скорости 33.6К что-то могли себе позволить. Именно поэтому все MSDN и прочие мануалы шли в комплекте с дистрибутивом. Это сейчас коварный микрософт отходит от старых традиций и увеличивает посещаемость своих страниц.
__________________
// no comments
Старый 29.11.2013, 11:53   #9  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Тема вызвала бурное обсуждение и развитие :O)
Для сомневающихся скажу, что это не партнерское решение (их нет в нашем варианте системы, используется стандарт), это код именно MS. Код не работает, его нашли именно по тому, что он давал ошибку, повторение скобочек и '-' в номере телефона. А вот, если их нет в исходной строке, то все хорошо.

С уважением, Дмитрий
Старый 29.11.2013, 12:29   #10  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Я честно пытался этот кусок кода найти в своем DAX2012R2CU7 и не смог. Не подскажете точный адрес ? (просто мне самому интересно как там такие комментарии смогли выжить в тексте, например).
Старый 29.11.2013, 12:30   #11  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от fed Посмотреть сообщение
Я честно пытался этот кусок кода найти в своем DAX2012R2CU7 и не смог. Не подскажете точный адрес ? (просто мне самому интересно как там такие комментарии смогли выжить в тексте, например).

Есть еще вариант, что это отраслевое решение от MS. Но я по всей кодовой базе 2012 не смог найти. В каком оно слое?
Старый 29.11.2013, 13:01   #12  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Это АХ2009. Печать основного документа в Бразилии Danfe. FiscalDocJurn_BR:getRecipientPhone
Очень, рад, если они это не перетащили в 2012... ;O)

С уважением, Дмитрий.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
The Death of Reason: #wpc13 US Dynamics: Where is MS Going in 2014? Blog bot DAX Blogs 2 12.07.2013 13:19
Rahul Sharma: MS Dynamics Ax 2009 EP Development - Part 2 Blog bot DAX Blogs 0 12.10.2010 15:05
emeadaxsupport: MS Project Integration resources with comma fail to export Blog bot DAX Blogs 0 12.05.2010 01:05
Инструкции по MS Axapta 3.0 HRM и MS Axapta 3.0 CRM? Горбунов Дмитрий DAX: Прочие вопросы 3 18.01.2006 12:35

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:35.