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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.10.2021, 14:30   #1  
axm2017 is offline
axm2017
Участник
 
2,066 / 296 (14) ++++++
Регистрация: 15.05.2017
Промежуточный итог как понимаю:

При задании доступа помни что чем меньше уровень доступа, тем проще анализировать код.

При указании private обоснуй для окружающих почему ты уверен что метод не потребуется извне.

Internal используй если ты из MS и уже смирился с этим.

Юзай final если возможно

Что еще?
Старый 02.10.2021, 10:52   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от axm2017 Посмотреть сообщение
При указании private обоснуй для окружающих почему ты уверен что метод не потребуется извне.

Internal используй если ты из MS и уже смирился с этим.
По-моему, если это внутренний код который никто снаружи не использует, то лучше все-таки по умолчанию private. Если кому-то надо будет поиспользовать - он сможет изменить модификатор на какой надо и это будет светиться на code review - "здесь сделан новый интерфейс, проверь, что все сделали правильно".

Если кто используется внешними потребителями у которых нет контрля над вашим кодом, надо понять модель обновления. Если вам не нужно соблюдать обратную совместимость, то можно делать как угодно - если вы что-то измените это будет проблема того, кто воспользовался вашим интерфейсом.

Если вы сделаете что-то protected, то надо рассматривать это как один из интерфейсов расширения. Если вы перекрываете метод с поведением в подклассе, то это как-правило нарушение LSP - обычно более логичная структура кода получается, если выделить абстрактный суперкласс и создать два наследника.

Официльные рекомендации для ISV - вот тут.

Последний раз редактировалось belugin; 02.10.2021 в 10:59.
За это сообщение автора поблагодарили: sukhanchik (6).
Старый 04.10.2021, 09:32   #3  
axm2017 is offline
axm2017
Участник
 
2,066 / 296 (14) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от belugin Посмотреть сообщение
По-моему, если это внутренний код который никто снаружи не использует, то лучше все-таки по умолчанию private.
Не использует != не будет использовать. Фичи вполне позволяют решать конфликтные ситуации (на сколько вижу практику того же МС). Private что был до D365 не предполагал что его нельзя поправить минимальными усилиями. В текущей реализации это уже честный private и неправильно выставленный он принесет больше проблем чем профита.

Сейчас для разработчиков бОльшая проблема недоступность к изменению функционала и время реакции.

Как пример те же закрытые командами МС модули. На сколько помню по циклам это около 4 недель ожидания если признают ошибкой (как понял из общения с коллегами это стандартный цикл разработки текущей версии, а далее cherry-picking на версии идущие к выпуску) и 4 недели * 4-5(?) если признают фичей (текущая версия а далее пройдет этапы до выпуска). Это недопустимо долго в реальности так как жить надо сейчас.

Именно по подобным примерам крайне отрицательно отношусь к необдуманному использованию internal без предоставления минимального интерфейса для коррекции вероятных ошибок алгоритмов.

ЗЫ и это кстати одна из причин почему мне нравится ER: как понимаю там цикл от обнаружения ошибки в логике ER конфигураций до выкладывания новой версии измеряется днями, часами. При этом клиент может сам поправить и спокойно жить в ожидании новой официальной версии.

Последний раз редактировалось axm2017; 04.10.2021 в 10:08.
За это сообщение автора поблагодарили: sukhanchik (6).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
d365technext: Private, Protected and Public attribute access in Class Extension Blog bot DAX Blogs 0 30.07.2018 20:13
i-neti: X++ in AX7: элементы с уровнями доступа private и public. Часть 4 Blog bot DAX Blogs 0 18.04.2017 13:11
mfp: X++ in AX7: Private and public members Blog bot DAX Blogs 12 10.12.2015 09:08
dynamics-ax: Microsoft Highlights New ERP Public Sector Capabilities for AX 2012 Blog bot DAX Blogs 0 23.05.2011 19:11
Rahul Sharma: Convert Dynamics AX Entity Private Address into Public GAB Address Blog bot DAX Blogs 0 07.04.2011 02:15
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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