|
03.12.2013, 10:44 | #1 |
Участник
|
Перенесено из темы Классные программисты MS Бразилии создали сей шедевр
Нашёл интересный пример кода. DAX 2009 (в AX 3.0 то же самое) Класс ProdRouteType, метод update. Привожу код метода: X++: void update() { ProdTable prodTable; ProdRoute prodRoute_Orig= prodRoute.orig(); ; ttsbegin; this.setBackStatus(); if (prodRoute.OprPriority) prodRoute.LinkType = SchedJobLinkType::None; prodRoute.doUpdate(); // Shop Floor Control begin if (Global::isConfigurationkeyEnabled(configurationkeynum(Jmgjob))) { JmgJobTable::synchronizeProdRoute(prodRoute); } // Shop Floor Control end if (0) { if (prodRoute.BackorderStatus != prodRoute_Orig.BackorderStatus) { prodTable= prodRoute.prodTable(true); prodTable.status().setBackStatus(); prodTable.doUpdate(); } } ttscommit; } X++: if (0) Что вы думаете на этот счёт? Зачем так могли сделать? Последний раз редактировалось Cardagant; 03.12.2013 в 10:50. |
|
03.12.2013, 11:02 | #2 |
Роман Долгополов (RDOL)
|
Цитата:
Сообщение от Cardagant
Перенесено из темы Классные программисты MS Бразилии создали сей шедевр
По сути оно подразумевает, что код не будет выполняться. Что вы думаете на этот счёт? Зачем так могли сделать? 2. Автор просто сделал код компилируемым в надежде дописать условие чуть позже и забыл Последний раз редактировалось db; 03.12.2013 в 11:06. |
|
|
За это сообщение автора поблагодарили: Cardagant (1). |
03.12.2013, 11:05 | #3 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Cardagant (1). |
03.12.2013, 11:08 | #4 |
Участник
|
|
|
03.12.2013, 12:19 | #5 |
Роман Долгополов (RDOL)
|
вот throw error() или debug::assert() дают некую надежду что тебе рано или поздно напомнят в принудительном порядке, а TODO, увы, может жить вечно Если кусок действительно не важен для правильного исполнения, то можно и TODO с нормальным комментарием. Если понимаешь что работать без этого куска нормально не будет, но по каким либо причинам надо привести в компилируемый вид (в жизни всякое бывает, иногда реально надо), то надо прервать исполнение если дойдет до недоделанного места.
|
|
03.12.2013, 12:26 | #6 |
Участник
|
Цитата:
Сообщение от db
вот throw error() или debug::assert() дают некую надежду что тебе рано или поздно напомнят в принудительном порядке, а TODO, увы, может жить вечно Если кусок действительно не важен для правильного исполнения, то можно и TODO с нормальным комментарием. Если понимаешь что работать без этого куска нормально не будет, но по каким либо причинам надо привести в компилируемый вид (в жизни всякое бывает, иногда реально надо), то надо прервать исполнение если дойдет до недоделанного места.
|
|
04.12.2013, 13:44 | #8 |
Участник
|
|
|
04.12.2013, 14:57 | #9 |
Участник
|
Именно так. Но теоретически можно представить представить себе ситуацию когда не содержащий ошибок компиляции код таким образом скрывается от выполнения, но не скрывается от компиляции. Например, для того что бы работали перекрестные ссылки, или просто чтобы бы при очередной компиляции проверять не появились ли ошибки в этом коде, связанные с изменениями в других объектах.
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
09.12.2013, 21:50 | #10 |
Сенбернар
|
Дивный код попался...
X++: TNow=TimeNow(); super(); switch(true) { case (23*3600 + 55*60 <tnow ): infolog.shutDown(true); return; break; }
__________________
Best Regards, Roman |
|