Sobre o estilo de codificação - página 5

 

Onde estão as classes em MQL4, C-4? E eu acho que os desenvolvedores disseram que não haverá herança em 5 por enquanto.

 
Mathemat >> :

Onde estão as classes em MQL4, C-4? E acho que os desenvolvedores disseram que não haverá herança em 5.

Já existe, com todas as gentilezas que o acompanham. E você pode vê-lo mesmo em Tetris (em fontes mq5).

 

Uau, isso é interessante. Três meses desde que o brinquedo foi publicado e só agora descobri...

 
Mathemat >> :

Uau, isso é interessante. Três meses desde que o brinquedo foi publicado e só agora descobri...

Acho que me escapou....

para que serve esta exclamação "uau"? existe algum mt5 lá fora para testar as fontes? se sim, não se importe de me dar um link para baixá-lo.

 

Bem, não, o MT5 ainda não é visível (para meros mortais), mas pelo menos você pode olhar para o código. É mais ou menos claro o que esperar.

 

Qualquer pessoa pode sugerir uma aplicação que possa analisar a fonte de MQL e produzir, de alguma forma, os nomes das variáveis/funções usadas e o número de suas "menções" no texto?

por exemplo, para pegar restos de variáveis não utilizadas dos textos jogados fora, e não para acidentalmente renomear um nome severamente abreviado para algo mais longo e claro, que se revela ser o nome de uma variável global, que você esqueceu há muito tempo e que existe em algum lugar no código.

 
YuraZ >> :

Eu prefiro

se ( a > c )

codret = 3;

se ( l < b )

codret = 5;

...

...

se ( h != b )

codret = 100;


// especialmente se houver algumas operações adicionais comuns para todas as saídas antes do retorno

... por exemplo, aqui nós fazemos algo mais

retrun( codret);

}

Você acabou de dar um excelente exemplo do porquê de eu usar múltiplas saídas de retorno. Em seu exemplo, a função retornará o último acionado se(), e não o primeiro. No meu exemplo, a função retornará a primeira partida. Na prática, muitas vezes descubro que preciso devolver exatamente o primeiro valor correspondente, e quase nunca tenho que devolver a última verificação acionada. Neste exemplo, ter apenas um retorno não facilita o rastreamento dos valores retornados pela função, ao contrário, pode-se esperar tudo de um único retorno.

A propósito, eu pessoalmente não gosto de separar o caráter crucial ";" da expressão:

preço máximo duplo externo[100] ; // preços de loja de máximos de 100 barras

preço máximo duplo externo[100] ; //Detem preços das últimas cem barras no máximo - Eu só escrevo desta forma

 
Nos anos 70, havia uma tendência muito na moda chamada "Programação Estruturada". Muitos livros foram escritos sobre o assunto. As frases mais lembradas foram: a função deve caber em uma folha (não havia displays na época), sem goto, e assim o livro inteiro. Então, supostamente, tudo se transformou em programação orientada a objetos. Talvez estejamos reinventando a roda novamente?
 

Não, estamos apenas falando de estilo aqui. A propósito, em alguns casos, não me importo nada de ir até lá.

 
C-4 >> :

Por que declarar uma função dentro de uma função? Pessoalmente, como cresci apenas em C e C++, não entendo este método.

Encapsulamento... Quando você escreve modelos e quer esconder uma função ou um funerário ou classe muito local, é muito útil.

E, na maioria das vezes, você pode sobreviver com um espaço de nomes anônimo.

2. Odeio o estilo muito comum de colocar parênteses encaracolados como este:

Muito a troco de nada. Um terreno fértil para todos os tipos de bloopers com aparelho. No passado, a justificativa era a economia de espaço e a regra do tamanho do código de função.

Mas agora na era dos terabytes, por que devemos nos arrepender da falta de espaço?

5. Eu uso funções dentro de funções:

Ineficiente (com várias chamadas de um), manchado e longo. Especialmente um dos UB, que é um foco de erros não triviais maliciosos.


Além disso, sobre as copastagens. Coisa muito irritante :). Confesso, eu o uso e cometo erros com muita freqüência. Por exemplo, esqueci de renomear uma variável, mudar um comentário ou o que quer que seja.

É por isso que a revisão de códigos é uma coisa muito útil.


Sobre Pascal :) . Até agora, ainda é a principal língua das Olimpíadas. Por uma razão simples - poucas palavras-chave, estrutura lógica.

Durante muito tempo eu não acreditei que Pascal (ou melhor, Delphi) fosse pior que C++, até descobrir que C++ era melhor.

Agora eu acho que Pascal é melhor de uma maneira: é mais difícil escrever código binário nele.


>> Então, sobre os comentários, é tudo uma besteira, especialmente cerca de 30%.

Escreva o código de autodocumentação, e você ficará feliz. Como não há classes na MQL4, é bastante difícil de fazer. Mas com as aulas deve ser mais fácil.


Tudo o resto - recuo, princípios de nomenclatura, alinhamento - nada mais é do que recomendações.

A propósito, por falar em funções. Qual deve ser a fonte? E se for uma linha a mais? O principal é deixar claro o que ele faz, e o resto são apenas recomendações.


O mais importante é tornar o código tão compreensível quanto possível para aqueles que possam mantê-lo.