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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.10.2010, 17:21   #1  
AX2011
Гость
 
n/a
> реальных недостатков у префиксов полно и они в этой теме уже подробно описаны и неоднократно

а можно ссылку? а то я не вижу "реальных" недостатков
Старый 25.10.2010, 12:47   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,719 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от AX2011 Посмотреть сообщение
> реальных недостатков у префиксов полно и они в этой теме уже подробно описаны и неоднократно

а можно ссылку? а то я не вижу "реальных" недостатков
Я понимаю, что "чукча не читатель, чукча писатель" Поэтому попробую свести вместе результат данного обсуждения

Использование префиксов было рекомендовано первыми выпусками Best Practis в ранних версиях Axapta. В последующих выпусках Best Practis (новых версиях Axapta) этой рекомендации больше нет. "Но осадок остался" (с)


Цель: Исключение пересечения имен с именами стандартных объектов с целью облегчения выделения кастомизированных объектов при переходе на новые версии/фиксы

Возражение:

1) Заявленная цель носит скорее теоретический характер. Никто и никогда еще не говорил на форуме о подобной проблеме.

2) При переходе на новую версию, "простой" upgrade в российских условиях - редкость. Обычно это выливается в написание нового приложения. Как следствие, переносится не код, а логика. Т.е. исходные имена объектов в "старой" версии не так уж и важны

3) Если имя кастомизированного объекта совпало с именем стандартного объекта в новом фиксе, то это повод пересмотреть логику использования данного объекта.


Цель: Идентификация компании/модуля/разработчика/фикса (в зависимости от того, что "шифруют" в префиксе) с целью последующего "разбора полетов"

Возражение:

1) Для идентификации автора объекта существует ряд других способов, не связанных с именованием объектов

2) Если проблема, связанная с объектом выявляется достаточно быстро, то и так все знают, кто автор. А если проблема выявляется не сразу, то на момент обнаружения проблемы уже не важно, кто автор. Надо проблему решать, а не искать крайнего

3) Префикс фиксирует момент создания объекта, а при "разборе полетов" требуется определить всю цепочку изменений, приведших к текущему состоянию объекта. Не переименовывать же объект после каждой модификации!

4) Если в префиксе "шифруется" разработчик или код фикса, то возникают проблемы при модификации подобного объекта. Ведь его префикс перестает соответствовать содержанию.

5) Если в префиксе "шифруется" компания, для которой сделана кастомизация, то возникает проблема при портировании решения для других компаний. Безотносительно к правовой стороне данного вопроса. Префикс перестает соответствовать содержанию.

Если же рассматривать правовую сторону подобного портирования, то она решается внепрограммными средствами. Префикс не может рассматриваться как предмет авторского права.

6) "Шифрование" в префиксе модуля оправдано только в случае, если это действительно отдельный независимый модуль. Но, в этом случае использование префикса фактически совпадает со "стандартной" идеологией именования объектов в системе Axapta. "А если нет разницы, то зачем...?" (с)


Цель: Идентификация кода модификаций в именах проектов

Возражение: Это единственный случай, который не вызывает существенных возражений Есть "придирка", а не возражение.

В случае многочисленных модификаций придется поднимать все проекты, в которые включен данный объект

Впрочем, это все-равно удобно. В случе поддержания правил вставки комментариев в код X++ можно определить имя проекта и посмотреть все объекты, включенные в данный проект. Сразу видно, что еще было изменено в данном проекте.

Хотя, данный способ использования можно считать "вне темы", поскольку к именованию объектов АОТ он не относится.


Цель: Модификации с одинаковым префиксом располагаются в АОТ рядом. Удобнее искать

Возражение:

1) Удобно, пока общее количество объектов относительно небольшое. При большом количестве объектов это уже существенного влияния не оказывает

2) Если объекты относятся к разным модулям, то поиск усложняется, поскольку объект оказывается далеко от стандартных объектов данного модуля. Необходим "двойной" поиск. Сначала по именам без префиксов, потом по именам с префиксами. Вне зависимости от того, нашли или нет что-то по поиску без префиксов. Если есть несколько префиксов, то надо будет выполнять поиск по каждому префиксу в отдельности.


Цель: "Расширение" одноименных объектов (дополнительные поля таблиц) или их локализация

Возражение: Для этой цели удобнее использовать суффиксы. Не нарушается стандартная идеология именования объектов и объекты оказываются рядом в АОТ


Дополнительные проблемы

1) В случае многочисленных кастомизаций будет много разных префиксов. Как следствие, возникают сложности в поиске и идентификации нужных объектов

2) Наличие префиксов - это паралельный стандарт именования объектов. Паралельный тому, который не явно предлагают разработчики Axapta. Как следствие, возникает необходимость поддержания нескольких стандартов именования. Чем их больше, тем сложнее.

3) Усложняется процесс вхождения в курс дела нового сотрудника. Ему нужно изучить "двойные стандарты" именования

4) Потенциально способствует дублированию функционала. Ну, не нашел нужного объекта (забыл про префикс) и создал свой собственный
За это сообщение автора поблагодарили: mazzy (5), fed (2), glibs (3), dn (2), CDR (1), Pustik (2), sukhanchik (2), lev (2), oip (5), gl00mie (2), ikopyl (4), S.Kuskov (3), kornix (2).
Старый 14.11.2012, 19:34   #3  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Цель: Идентификация компании/модуля/разработчика/фикса (в зависимости от того, что "шифруют" в префиксе) с целью последующего "разбора полетов"

Возражение:

1) Для идентификации автора объекта существует ряд других способов, не связанных с именованием объектов
Что это? Слои? Комментарии в коде? Createdby в свойствах объекта? Придуманный программистом лог изменения объектов?
Наверное, все-таки, в бытовых случаях пользоваться стандартным поиском по АОТ удобно, где префиксы доминируют.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 15.11.2012, 09:13   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Роберт Мартин - Чистый код. Создание, анализ и рефакторинг
__________________
// no comments
Старый 15.11.2012, 15:31   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,719 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Pustik Посмотреть сообщение
Что это? Слои? Комментарии в коде? Createdby в свойствах объекта? Придуманный программистом лог изменения объектов?
Вот видите, сколько способов Вы уже нашли! При этом никакой префикс Вам не понадобился.

Цитата:
Сообщение от Pustik Посмотреть сообщение
Наверное, все-таки, в бытовых случаях пользоваться стандартным поиском по АОТ удобно, где префиксы доминируют.
Предположим, у Вас есть такие объекты

InventTable
XXX_InventTable
YYY_InventTable
ZZZ_InventTable

Как Вы думаете, будет ли Вам удобно искать по AOT, если Вы точно не знаете где именно находится то, что Вам нужно? А если Вы точно не знаете сколько всего префиксов может быть?

На всякий случай уточню. Сама идея префиксов предполагает поиск только и исключительно в алфавитном порядке и никак иначе! Поскольку для всех других способов поиска в AOT факт наличия или отсутствия префикса никакого значения не имеет.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 16.11.2012, 19:30   #6  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Предположим, у Вас есть такие объекты

InventTable
XXX_InventTable
YYY_InventTable
ZZZ_InventTable

Как Вы думаете, будет ли Вам удобно искать по AOT, если Вы точно не знаете где именно находится то, что Вам нужно?
Я, думаю, что будет удобно. : *InventTable* . А далее, как говорится , вопрос техники. И я, точно буду знать, что впереди стоит не ВасяПетров_inventTable, а, к примеру, Затраты на ремонт оборудования_*******.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 16.11.2012 в 19:42.
Старый 16.11.2012, 20:50   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,719 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Pustik Посмотреть сообщение
Я, думаю, что будет удобно. : *InventTable* . А далее, как говорится , вопрос техники. И я, точно буду знать, что впереди стоит не ВасяПетров_inventTable, а, к примеру, Затраты на ремонт оборудования_*******.
Я имел в виду поиск не через Ctrl+F, а поиск по горячим клавишам. Т.е., например, встать на начало узла Tables и начать набирать символы "InventTable". Указатель автоматически перейдет на узел, имя которого начинается с этих символов.

Через Ctrl+F, как правило, вываливается "вагон и маленькая тележка" найденных значений, где потом еще дополнительно надо как-то искать.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: sukhanchik (5), LeonDerCom (1).
Старый 17.11.2012, 07:37   #8  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Владимир Максимов, спустили на землю)). Не часто этим пользуюсь, потому что все оформлено в проектах. Любой вопрос от пользователя для меня начинается с проекта. Все лежит в голове.
Для поиска таблиц и других объектов использую специальную форму.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 17.11.2012 в 07:57.
Старый 19.11.2012, 13:13   #9  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Вот видите, сколько способов Вы уже нашли! При этом никакой префикс Вам не понадобился.

Предположим, у Вас есть такие объекты

InventTable
XXX_InventTable
YYY_InventTable
ZZZ_InventTable

Как Вы думаете, будет ли Вам удобно искать по AOT, если Вы точно не знаете где именно находится то, что Вам нужно? А если Вы точно не знаете сколько всего префиксов может быть?

На всякий случай уточню. Сама идея префиксов предполагает поиск только и исключительно в алфавитном порядке и никак иначе! Поскольку для всех других способов поиска в AOT факт наличия или отсутствия префикса никакого значения не имеет.
На самом деле тут и с другой стороны можно посмотреть. Например есть у нас 30 таблиц XXX 50 таблиц YYY и еще 20 ZZZ. Набрав в AOT 'ZZZ' мы сразу увидим все таблицы этого решения и уверен очень быстро выберем нужную, не так ли? Мне все же кажется, что количество решений в приложении значительно меньше, нежели количество самих таблиц.
Опять таки, с теми же полями, мне куда удобнее набрать ZZZ после точки и увидеть все поля данного решения в стандартной таблице.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 19.11.2012, 08:51   #10  
LeonDerCom is offline
LeonDerCom
Участник
 
45 / 20 (1) +++
Регистрация: 08.10.2012
Цитата:
Сообщение от Pustik Посмотреть сообщение
Что это? Слои? Комментарии в коде? Createdby в свойствах объекта? Придуманный программистом лог изменения объектов?
Наверное, все-таки, в бытовых случаях пользоваться стандартным поиском по АОТ удобно, где префиксы доминируют.
А если модуль создавался еще при царе Горохе и тут новое начальство решило внедрить или модифицировать? Менять префикс на нового автора, а потом вспоминать кто и какой модуль модифицировал... Для таких вещей удобней использовать CreateBy или сразу коментарием в classDeclaration? А информацию для идентификации организации и т.д. преписать суффиксом и тогда при поиске вам будет намного проще.
И полностью солидарен с Владимиром Максимовым.
Старый 19.11.2012, 13:25   #11  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от LeonDerCom Посмотреть сообщение
А если модуль создавался еще при царе Горохе и тут новое начальство решило внедрить или модифицировать? Менять префикс на нового автора, а потом вспоминать кто и какой модуль модифицировал... Для таких вещей удобней использовать CreateBy или сразу коментарием в classDeclaration? А информацию для идентификации организации и т.д. преписать суффиксом и тогда при поиске вам будет намного проще.
И полностью солидарен с Владимиром Максимовым.
Мне кажется тут решение зависит от ваших целей, задач, методологии и не важно вчера ли этот модуль создавался или 10 лет назад при первом внедрении. Что мешает оставить префикс? Ненужные объекты удаляем, новые или переписанные пишем под своим префиксом. Я например оставлял старые префиксы старых партнеров. При этом все отлично видно, где старые решения, где текущие партнеры, где наша кастомизация. Абсолютно никакой путаницы и удобный поиск элементов по AOT и в коде.
Очень удобно нахожу использование префикса 'DEV' в тех проектах, что не относятся к функционалу. На сегодняшний день например только 46 классов DEV_* Не представляю как их искать по суффиксам
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 19.11.2012, 14:12   #12  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от Link Посмотреть сообщение
Опять таки, с теми же полями, мне куда удобнее набрать ZZZ после точки и увидеть все поля данного решения в стандартной таблице.
Какую задачу вы решаете, набрав ZZZ? Вот по шагам - что нужно сделать в конечном итоге и что вы для этого делаете.

Цитата:
Сообщение от Link Посмотреть сообщение
Очень удобно нахожу использование префикса 'DEV' в тех проектах, что не относятся к функционалу. На сегодняшний день например только 46 классов DEV_* Не представляю как их искать по суффиксам
А вот тут, как раз, очень подходит _стандартный_ подход по использованию префиксов согласно области. DEV* в этом плане аналогичен Invent*, Cust* и т.п.

В своих решениях КОРУС не использует искусственные префиксы и суффиксы, работаем в стандартной нотации - префиксы используются только для областей.
__________________
Ivanhoe as is..
Старый 19.11.2012, 14:43   #13  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Какую задачу вы решаете, набрав ZZZ? Вот по шагам - что нужно сделать в конечном итоге и что вы для этого делаете.
Очевидно, что любая задача в контексте обсуждения сводится к поиску определенного объекта или нескольких объектов Я не могу вспомнить где бы мне помог суффикс при поиске. Обычно, когда я ищу по АОТ кастомизированный объект, то мне известно к какому решению оно относится, стало быть набрав ZZZ я увижу все объекты в алфавитном порядке. Если к примеру я не могу сходу определить нужный, то обычно следующий шаг это поиск по выбранным объектам ZZZ по узлам или коду.
А какую задачу вы бы назвали сравнительно легкой с использованием суффиксов в противоположность использованию префиксов?

Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
А вот тут, как раз, очень подходит _стандартный_ подход по использованию префиксов согласно области. DEV* в этом плане аналогичен Invent*, Cust* и т.п.

В своих решениях КОРУС не использует искусственные префиксы и суффиксы, работаем в стандартной нотации - префиксы используются только для областей.
Предпочитаю отделять префиксы что бы не было путаницы с модулями. Т.е. все префиксы пишутся как 'XXX_' или 'DEV_' это так же сводит на нет вероятность совпадения имен со стандартными объектами. Так же у нас префиксуются проекты. В проекта еще используем суффикс с номером кейса, например '_RFC_015'. Задача поиска проекта по номеру для меня служит наглядными примером почему суффиксы абсолютно неэффективны при поиске. Тут поможет немножко программирования - а именно простая формочка в которой этот номер будет сохраняться в отдельное поле.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Теги
как правильно, полезное, holywar

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Что лучше, много номенклатур или много конфигураций? axvrp DAX: Функционал 75 21.09.2010 16:13
Как лучше вносить изменения в чужой класс ski DAX: Программирование 13 18.08.2009 10:15
LedgerJournalTable как лучше сделать новую форму kitty DAX: Программирование 2 20.02.2008 12:36
Site в складской аналитике. Как лучше перевести? mazzy DAX: Прочие вопросы 73 07.01.2008 12:18
подскажите. как лучше сделать kitty DAX: Программирование 4 02.11.2007 11:14

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

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

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