12.05.2011, 18:49 | #1 |
Участник
|
Как правильно именовать временные таблицы
В ранних версиях Best Practices рекомендовалось начинать имя временной таблицы с префикса "Tmp". Например, TmpCustLedger
Современная версия Best Practices (Ax2009) рекомендует вставлять "Tmp" непосредственно за обозначением модуля. Например, CustTmpLedger Есть ли вообще практический смысл как-то обозначать тот факт, что таблица является временной непосредственно в имени таблицы? Если есть, то стоит ли придерживаться рекомендаций Best Practices или же, например, писать "Tmp" как окончание (или суффикс) имени? |
|
12.05.2011, 19:14 | #2 |
Участник
|
мне кажется, что практического смысла нет.
все равно в коде любую таблицу можно объявить временной. поэтому все равно надо отслеживать код. кроме того, в ax2012 уже и майкрософт не придерживается своих best Practice по наименованиям таблиц. |
|
12.05.2011, 19:21 | #3 |
Боец
|
Удобнее всего "Tmp" ставить в самом конце имени, тогда, сортируясь по алфавиту в АОТ, таблица будет находиться на своем месте, среди таких же таблиц, относящихся к общей функциональности, напр. CustPaymOnlineTransTmp. Если же "Tmp" всунуть после названия модуля (CustTmpPaymOnlineTrans), то все временные таблицы модуля "уйдут" вниз АОТ, что неудобно и лишено смысла.
А практический смысл конечно есть. Всегда важно знать, временная таблица, или нет, буть то в АОТ или в коде. Последний раз редактировалось DSPIC; 12.05.2011 в 19:27. |
|
12.05.2011, 19:41 | #4 |
Участник
|
Вот ещё вариантик :
TCustMLedgerP и вначале и в середине и в конце! |
|
12.05.2011, 20:00 | #5 |
Участник
|
Цитата:
Цитата:
Сообщение от Владимир Максимов
Если есть, то стоит ли придерживаться рекомендаций Best Practices или же, например, писать "Tmp" как окончание (или суффикс) имени?
В ранних версиях Best Practices рекомендовалось начинать имя временной таблицы с префикса "Tmp". Например, TmpCustLedger Современная версия Best Practices (Ax2009) рекомендует вставлять "Tmp" непосредственно за обозначением модуля. Например, CustTmpLedger Лично я в этом вопросе согласен с DSPIC |
|
12.05.2011, 23:10 | #6 |
Участник
|
По-моему, смысл есть и вот какой: таблицы в Аксапте - это, образно говоря, сгусток метаданных Каждое свойство самой таблицы, ее полей, индексов несет глубокий смысл и может влиять на поведение очень многих мест приложения. В то же время, в случае временных таблиц правила заполнения разного рода свойств обычно соблюдаются "спустя рукова", что в принципе оправдано. Так вот, не скажу за всех, но если я лично вижу на текущем слое таблицу, у которой не выставлен ключ контроля доступа, или метка, или FormRef, или TitleFields, или у которой поля, являющиеся первичным ключом, не помечены как обязательные к заполнению и редактируемые лишь при создании записи... в общем, у меня лично первая реакция - "КАКОЙ <CENSORED> ЭТО СДЕЛАЛ?!" А если таблица временная - ну что ж... фиг бы с ним, может, она вообще нужна лишь для хранения/передачи наборов разнотипных значений как прекрасная альтернатива ненавистным контейнерам. В общем, явное указание в имени того, что таблица - временная, может в каких-то случаях сэкономить несколько нервных клеток
|
|
13.05.2011, 10:24 | #7 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Смысл в том чтобы сделать более удобным чтение кода. Т.к. в аксапте ещё принято чтобы имя табличного курсора совпадало с именем таблицы, то при работе с таким курсором по его имени сразу будет понятно что он временный.
Какие преимущества (бонусы) дает программисту знание того факта, что данная таблица временная до анализа программного кода? В чем заключается это самое "удобство чтения кода"? Цитата:
Сообщение от gl00mie
В общем, явное указание в имени того, что таблица - временная, может в каких-то случаях сэкономить несколько нервных клеток
Если Вы видите, что у таблицы, например, не выставлен ключ контроля, то для того, чтобы определить временная это таблица или нет Вы будете смотреть на ее имя или таки на свойство Temporary? В смысле, если уж дело дошло до анализа свойств таблицы, то не все ли равно, как эта таблица называется? |
|
13.05.2011, 10:32 | #8 |
Участник
|
Я по-привычке выставляю в настройках сортировку свойств по алфавиту - при этом на моем мониторе с разрешением 1680х1050 свойство Temporary таблицы не помещается на экране, и чтобы его увидеть, свойства нужно прокрутить вниз По имени лично мне ориентироваться проще. Собственно, думаю, Best Practices по именованию таблиц тоже возникли не на пустом месте, а то ведь модуль, к которому относится таблица, и ее "тип" (справочник, группы, проводки, и т.п.) тоже ведь можно было бы не из имени узнавать, а из свойств или, там косвенных признаков вроде примеров использования таблицы в коде...
|
|
13.05.2011, 15:10 | #9 |
MCT
|
Я понимаю, что, наверное, слишком дорого отслеживать Best Practices вендору среди своих молодых разработчиков.
Но, и еще раз но... быстрота поиска и распознавания сущности стоит этих усилий.
__________________
Axapta book for developer |
|
13.05.2011, 15:19 | #10 |
Участник
|
Цитата:
Можно уточнить о чем речь? Какое отношение данный ответ имеет к заданному вопросу? |
|
13.05.2011, 15:29 | #11 |
Участник
|
Ну например, какой-нибудь метод принимает в качестве параметра табличный курсор. Если курсор временный, то можно предположить что передаётся не просто запись (возможно и такое), а ссылка на временный буфер. И соответственно ожидать от кода уже можно обработку не только одной записи а нескольких.
|
|
13.05.2011, 15:43 | #12 |
Участник
|
На самом деле, следует делать так, как советует Майкрософт.
В АХ 2012 рекомендация о наименовании временных таблиц была изменена с "Prefix" на "Infix". Страницы на MSDN о временных таблицах были обновлены с учетом новых рекомендаций: Best Practices for Table Properties Temporary Tables Майкрософт тоже пытается следовать этим рекомендациям. Единственное исключение - это таблицы, используемые в качестве структур данных (как, к примеру, InventDimParm) |
|
13.05.2011, 16:00 | #13 |
Участник
|
|
|
13.05.2011, 16:10 | #14 |
Участник
|
Ну, здесь я могу только гадать, но предполагаю, что это связано с мнемоникой произношения названия таблицы
То бишь, правильнее сказать "Temporary customer transactions" (CustTmpTrans с учетом того, что мы хотим, чтобы она располагалась рядом с другими Cust таблицами) чем "Customer transactions temporary" (CustTransTmp) |
|
16.05.2011, 14:46 | #15 |
Участник
|
Насколько я понимаю, указание "Tmp" в имени объекта призвано подчеркнуть тот факт, что временная таблица - это объект приложения отличный от собственно таблицы. Другой тип объектов. Однако по каким-то причинам разработчки Axapta не хотят или не могут довести это выделение до логического конца и выделить этот тип объектов в отдельную ветку AOT, как это было сделано с Maps и Views.
Вот Best Practices и предлагает разработчикам делать это выделение в "отдельную ветку" AOT "вручную" используя специальный способ именования подобных объектов. Ведь если следовать рекомендациям Best Practices именно это и получится. Все временные таблицы будут сгруппированы в одном месте (в разрезе модулей), как если бы они были выделены в отдельную ветку AOT. В пользу подобного предположения говорит тот факт, что для именования View тот же Best Practices рекомендует использовать именно окончание "View", а для именования MAP вообще нет каких-либо рекомендаций, хотя многие MAP имеют соответствующее окончание. Т.е. если объекты уже выделены в отдельную ветку AOT, то используется именно окончание, а не prefix или infix, поскольку это, очевидно, удобнее для разработчика. Рекомендация Best Practices о наименовании временных таблиц имеет смысл, если предполагается выполнение неких групповых операций с однотипными объектами именно в AOT. Не в программном коде, а непосредственно в дереве объектов. Так сразу и не приходит в голову, чтобы такое это могло бы быть. Причем настолько важное, что явно пожертвовали удобством использования в программном коде. Вероятно, это какие-то системные "заморочки" разработчиков Axapta. Есть какие-либо идеи, что это могут быть за операции? Или я ошибаюсь в своих предположениях? Если эти операции не имеют отношения к процессу разработки, может, лучше не следовать рекомендациям Best Practices в данном случае? |
|
16.05.2011, 15:03 | #16 |
Участник
|
Цитата:
Цитата:
Сообщение от Владимир Максимов
Рекомендация Best Practices о наименовании временных таблиц имеет смысл, если предполагается выполнение неких групповых операций с однотипными объектами именно в AOT. Не в программном коде, а непосредственно в дереве объектов. Так сразу и не приходит в голову, чтобы такое это могло бы быть. Причем настолько важное, что явно пожертвовали удобством использования в программном коде. Вероятно, это какие-то системные "заморочки" разработчиков Axapta.
Есть какие-либо идеи, что это могут быть за операции? |
|
16.05.2011, 15:34 | #17 |
Участник
|
Ну, учитывая, что namespaces у нас нет, а таблички хотелось бы называть так же, то была бы ошибка компиляции даже если бы они были в другом узле АОТ из-за конфликта имен. Поэтому все равно пришлось бы добавлять Tmp в название
|
|
16.05.2011, 15:45 | #18 |
Участник
|
Цитата:
1. Если имя временной таблицы не совпадает с именем обычной таблицы, то конфликат имен нет. Нет необходимости добавлять "Tmp" 2. Если совпадает, то, скорее всего, добавили бы "Tmp" в конец имени, а не в начало или середину. В качестве примера можно опять же привести узлы Views или Maps, где именно такая логика именования и реализована. |
|
17.05.2011, 01:43 | #19 |
Участник
|
Цитата:
Цитата:
Цитата:
Сообщение от Владимир Максимов
Вот Best Practices и предлагает разработчикам делать это выделение в "отдельную ветку" AOT "вручную" используя специальный способ именования подобных объектов. Ведь если следовать рекомендациям Best Practices именно это и получится. Все временные таблицы будут сгруппированы в одном месте (в разрезе модулей), как если бы они были выделены в отдельную ветку AOT.
Цитата:
Сообщение от Владимир Максимов
В пользу подобного предположения говорит тот факт, что для именования View тот же Best Practices рекомендует использовать именно окончание "View", а для именования MAP вообще нет каких-либо рекомендаций, хотя многие MAP имеют соответствующее окончание. Т.е. если объекты уже выделены в отдельную ветку AOT, то используется именно окончание, а не prefix или infix, поскольку это, очевидно, удобнее для разработчика.
Цитата:
|
|
17.05.2011, 11:51 | #20 |
Участник
|
Цитата:
Насчет отключения конфигурационного ключа. Это из разряда забавных фич, которые крайне не желательно использовать при разработке приложения. Цитата:
Т.е., с точки зрения Best Practices разница таки есть. Раз специально предусмотрено их выделение в отдельную "группу". Причем разделение сделано таким образом, чтобы максимально удалить их друг от друга. Разнести в AOT "по разным углам" Цитата:
Ну, например, какой смысл для временных таблиц в свойствах Created... и Modified...? А свойство CacheLookup? Вызывает большое сомнение необходимость ключей для временных таблиц. Да Ваши же собственные слова о том, что часть свойств не указывается для временных таблиц! В общем, есть что повыбрасывать... Цитата:
И, кстати, фраза "тип временных таблиц" звучит многообещающе! Временные таблицы уже начали и по типам делиться? Цитата:
Цитата:
Выделение Tmp в начало приводит к тому, что постоянная таблица и временная таблица сделанная по ее "образцу" (или логически связанная) оказываются далеко разнесенными друг от друга в AOT. Т.е., например, при внесении изменений в постоянную таблицу можно просто забыть изменить еще и временную (если это необходимо, конечно) Да и вообще, именование временных таблиц выбивается из общей схемы именования объектов AOT. Т.е. нужно заранее знать, что ищем именно временную таблицу. Следовательно, с точки зрения Best Practices - это все-таки отдельный объект! Отдельная сущность. |
|
Теги |
временная таблица, как правильно |
|
Похожие темы | ||||
Тема | Ответов | |||
Временные таблицы и их временные файлы | 6 | |||
И опять временные таблицы | 22 | |||
И снова Query и временные таблицы | 19 | |||
Временные таблицы в отчетах | 5 | |||
Временные таблицы | 3 |
|