Наверное все используют шаблон 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();
}
}
}
З.Ы. Критика приветствуется