Обсуждение статьи "Шаблон проектирования MVC и возможность его использования (Часть 2): Схема взаимодействия между тремя компонентами"

 

Опубликована статья Шаблон проектирования MVC и возможность его использования (Часть 2): Схема взаимодействия между тремя компонентами:

Данная статья продолжает и завершает тему, поднятую в прошлой статье — шаблон MVC в программах на MQL. В этой статье мы рассмотрим возможную схему взаимодействия между этими тремя компонентами.

В результате метод Контроллера, который вызывается в обработчике  OnChartEvent основного файла индикатора, выглядит так:

void CController::ChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) {

      switch (id) {
         case CHARTEVENT_OBJECT_CLICK:
            if (StringCompare(sparam, pBtn.GetName()) == 0) {
               if (pView.GetViewType() == LINE)
                  pView.SetNewViewType(HISTO);
               else pView.SetNewViewType(LINE);   
            }
            break;      
        default:
            break;    
      }//switch (id)
}


Метод проверяет, на нужном ли графическом объекте произошел щелчок мыши и переключает способ отображения в Представлении:

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

Автор: Andrei Novichkov

 
Андрей, спасибо за статью.

Какие хочется внести идеи в Ваш проект...

1. Во входных параметрах можно использовать без знаковые типы, тогда терминал просто не позволяет пользователю вводить отрицательные значения, например uint.

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

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

4. Используйте стандартные классы терминала, например для создания индикаторов и т.п. не делайте велосипедов, вряд-ли Ваш код будут использовать опытные разработчики, но вы очень сильно прокачаете навык используя стандартные классы.

5. Используйте виртуальные методы, там где это допустимо, чтобы развязать руки другим разработчикам, которые будут использовать ваши классы и наследоваться от них, чтобы не изменяли ваш класс напрямую.
 
Спасибо за комментарий. Я представляю статью (все свои статьи), как нечто подталкивающее к реакции, к самостоятельному творчеству. Ни в коем случае не как догму какую то. Поэтому Ваши замечания весьма кстати, из них можно почерпнуть много полезного.