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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.09.2007, 23:51   #1  
Blog bot is offline
Blog bot
Участник
 
25,631 / 848 (80) +++++++
Регистрация: 28.10.2006
dax-dilettante: 15. System Classes \ The Global Class
Источник: http://dax-dilettante.blogspot.com/2...hapter153.html
==============

(последнее обновление: 10.08.07)
(основной перевод: 10.08.07)


Класс Global

Класс Global в своем исходном виде содержит около 250 статических методов. Каждый из этих методов можно считать дополнением к встроенным функциям языка X++. Обычно при обращении к статическому методу какого-либо класса в X++ необходимо использовать следующий синтаксис:
ClassName::methodName(...);
Однако, компилятор обрабатывает методы класса Global особым образом, что позволяет убрать ссылку на имя класса. Следующие две строки означают одно и то же:
Global::info(...);
info(...);
Метод info класса Global обычно используется для вывода информационных сообщений в форму Infolog.

Вышеупомянутая особенность компилятора может сделать код X++ более читабельным. Если вы обнаруживаете, что ссылаетесь на один и тот же метод из многих мест программы или неоднократно реализуете одну и ту же тривиальную функциональность, то вам следует подумать о добавлении новых методов в класс Global.

В Dynamics AX 4.0 в класс Global добавлен показанный ниже метод strStartsWith:
static boolean strStartsWith(str _string, str _potentialStart)
{
if (substr(_string, 1, strlen(_potentialStart)) == _potentialStart)
return true;
return false;
}
Этот метод подходит для класса Global, поскольку он в целом полезен и поскольку он скрывает несущественные детали реализации определения того, начинается ли одна строка с заданной другой. Если в дальнейшем потребуется внести изменения (например, появится более быстрый алгоритм), то нужно будет изменить только этот один-единственный метод, который инкапсулирует детали реализации, а не все места в программе, где встречается вызов этого метода. Такая инкапсуляция также делает код X++ проще, позволяя вам сосредоточиться на проблеме более высокого уровня, а не на низкоуровневых деталях реализации.

Чтобы определить, стоит ли помещать метод в класс Global или ему лучше подойдет другой класс, вы должны рассмотреть контекст, обеспечиваемый указыванием имени класса. Если метод будет помещен в Global, то этот контекст будет теряться из-за отсутствия имени класса. Другие классы, такие, например, как SysDictClass и WinApi, также имеют набор статических методов. Рассмотрим контекст, обеспечиваемый указыванием имени класса в этих двух случаях:
WinApi::getTickCount();
SysDictClass::as(...);
В первом примере ссылка на WinApi сообщает разработчику, что этот метод использует возможности, доступные через Microsoft Windows API. Во втором примере SysDictClass говорит о функциональности, относящейся к рефлексии классов. Эта информация будет утрачена, если методы getTickCount и as будут помещены в класс Global.

Вы должны также предусмотреть простоту обнаружения (discoverability) ваших методов. Когда вы помещаете метод в Global, программист не сможет воспользоваться преимуществами функции IntelliSense, до тех пор пока он или она явно не напишет название класса Global; в этом случае несколько пострадает читабельность, если имя самого класса будет оставлено перед именем метода в написанном исходном коде. Если же вы поместите ваш метод в класс, к которому он логически подходит, программисту необходимо будет знать только о существовании такого класса. И далее он сможет перейти к нему при необходимости. Большинство опытных X++ разработчиков осведомлены о классе WinApi. Очень немногие, если вообще кто-нибудь, знают все 250 методов класса, да это и не нужно.

Если вы все еще обучаетесь языку X++, то вам следует регулярно просматривать класс Global в поисках полезных методов, которые позволят упростить вашу работу. Встроенные функции X++ дополняют методы класса Global, совместно предоставляя разработчику обширный набор функций общего назначения. Список всех встроенных функций X++ вы сможете найти в AOT в узле System Documentation\Functions.

Класс Global также является специальным классом и поэтому располагается конце списка классов в AOT наряду с глобальными классами сеанса, рассмотренными в предыдущем разделе.

Источник: http://dax-dilettante.blogspot.com/2...hapter153.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dax-lessons: Create HTML using HtmlTextWriter class in x++ Blog bot DAX Blogs 0 15.04.2008 20:05
Передача функции в качестве параметра lemchey_white DAX: Программирование 20 21.01.2008 22:51
dax-dilettante: 15. System Classes \ The Global Session Classes Blog bot DAX Blogs 0 26.09.2007 23:51
dax-dilettante: 15. System Classes \ The Collection Classes Blog bot DAX Blogs 0 26.09.2007 23:51
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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