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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.08.2013, 11:45   #1  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Новый шаблон проектирования execute()
Наверное все используют шаблон construct(), основанный на рекомендациях Microsoft. Я придумал небольшое нововведение, позволяющее методы сделать более "чистыми".
Пример кода, как мы обычно строим RunBase-класс:
X++:
class ConstructTemplateDemo extends RunBase
{
    public static void main(Args _args)
    {
        ConstructTemplateDemo constructTemplateDemo = ConstructTemplateDemo::construct();
        ;
    
        if (constructTemplateDemo.init() && constructTemplateDemo.prompt())
        {
            constructTemplateDemo.run();
        }
    }

    public static ConstructTemplateDemo construct()
    {
        return new ConstructTemplateDemo();
    }
}
Видно, что и сам класс и его переменная занимают много места в тексте, кроме того в методе main() может также анализироваться _args, что усложнит логику метода и читать этот метод станет сложнее.
Прикинем, что можно сделать... Выделим содержимое метода main() в новый метод и посмотрим, что же у нас получилось:
X++:
class ExecuteTemplateDemo extends RunBase
{
    public static void main(Args _args)
    {
        ExecuteTemplateDemo::construct().execute();
    }

    public static ExecuteTemplateDemo construct()
    {
        return new ExecuteTemplateDemo();
    }

    public void execute()
    {
        if (this.init() && this.prompt())
        {
            this.run();
        }
    }
}
З.Ы. Критика приветствуется
__________________
// no comments
За это сообщение автора поблагодарили: mazzy (5).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX 2012 и шаблоны проектирования db DAX: Программирование 31 24.07.2014 12:40
dax-lessons: Get the underlying SSRS Report Query, reset query , add your own ranges and execute report [Dynamics AX 2012, X++] Blog bot DAX Blogs 0 30.04.2013 01:13
palleagermark: AIF: Execute messages on demand Blog bot DAX Blogs 0 11.01.2012 20:12
Synchronisation Error: Cannot execute a data definition language command on (). Blog bot DAX Blogs 0 20.12.2008 05:37
ODBCConnection Execute Select gb DAX in English 6 07.08.2005 00:00
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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