Discussão do artigo "O padrão de design MVC e suas possibilidades de uso (Parte 2): Esquema de interação entre três componentes"

 

Novo artigo O padrão de design MVC e suas possibilidades de uso (Parte 2): Esquema de interação entre três componentes foi publicado:

Este artigo dá continuação e complemento ao tópico que vimos no artigo anterior, isto é, ao padrão MVC em programas escritos em MQL. Neste artigo, estudaremos um possível esquema de interação entre esses três componentes.

Como resultado, o método do Controlador, que é chamado no manipulador OnChartEvent do arquivo principal do indicador, se parece com isso:

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)
}


O método verifica se o clique ocorreu mo objeto gráfico necessário e alterna o método de exibição na Visualização:

Todas as adições foram feitas muito rapidamente. Se eu tivesse que realizar ações semelhantes em um ano, eu não demoraria muito mais do que isso. Como o desenvolvedor consegue se lembrar da estrutura do script, da função de que cada componente, é possível orientar-se mesmo que a documentação seja perdida ou os princípios do trabalho sejam esquecidos.

Autor: Andrei Novichkov

 
Andrei, obrigado pelo artigo.

Gostaria de acrescentar algumas ideias ao seu projeto...

1. Nos parâmetros de entrada, você pode usar tipos não assinados, pois o terminal simplesmente não permite que o usuário insira valores negativos, por exemplo, uint.

2. Não recomendo substituir os parâmetros na entrada pelo valor padrão; caso contrário, quando você usar o testador de estratégia, terá muitas execuções idênticas, e não apenas por esse motivo; o segundo ponto é que isso fica oculto e o usuário não perceberá que cometeu um erro; é melhor informar sobre o erro e parar de trabalhar.

3. Recomendo o uso de dicionários para armazenar dados e variáveis; no seu caso, eles se encaixam perfeitamente, e o código pode ser reduzido em tempo, mesmo em projetos grandes.

4) Use classes padrão do terminal, por exemplo, para criar indicadores etc. Não faça bicicletas, pois seu código dificilmente será usado por desenvolvedores experientes, mas você aumentará muito suas habilidades usando classes padrão.

5. Use métodos virtuais, onde for permitido, para liberar as mãos de outros desenvolvedores que usarão suas classes e herdarão delas, de modo que eles não modifiquem sua classe diretamente.
 
Obrigado pelo comentário. Apresento o artigo (todos os meus artigos) como algo que incentiva uma reação, uma criação independente. De modo algum como um dogma. É por isso que seus comentários são muito úteis, você pode aprender muitas coisas úteis com eles.
 

Há uma falta de barra inferior na visualização horizontal do Metatrader 5 para celular. A barra que mostra "Quotes,/Charts/Trade/History/Messages" não é acessível a partir da visualização horizontal da tela. O usuário precisa virar o smartphone para cima 📲 para acessar a barra "Quotes/Chart/Trade/History/Messages".

O vídeo pode especificar o que estou dizendo.