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

 
Mathemat >> :

Yura, seu exemplo com um retorno, é claro, é lógico. Mas preste atenção que, neste caso, todos os ifs são sempre executados, ao contrário do caso com muitos retornos, quando a saída da função é obtida imediatamente após atingir a corda com a condição.

ForexTools, obrigado, eu adotei suas idéias sobre formatação.

Mathemat, porque o operador condicional "se" também tem um gadget como "outro".

se(expressão1) operador1;

senão se(expressão2) operador2;

caso contrário, se (expressão3) operador3;

outro operador4;

E então o operador é executado após a primeira condição verdadeira e é isso. Todos os "ses" não são executados mais. Se uma condição verdadeira for encontrada, o operador correspondente é executado e o programa continua após esta construção (sem mais buscas na construção).

 

Eu não estou discutindo, Sergei. Eu estava falando sobre o projeto do Jura aqui.

 

Há outra pergunta interessante para "estimular" a discussão: Em que medida as limitações da plataforma afetam o estilo de escrita de um programa MQL? Por exemplo: o código é mais fácil de escrever, compreender/ler e manter se cálculos logicamente isolados forem feitos em funções separadas. Mas cada chamada de uma função (especialmente em um intérprete, como a MQL) é uma operação que consome tempo. É claro que uma única chamada não é crítica, mas a maioria de nós tem que escrever tais coisas dentro de um loop (para int i=0; i<Bars; i++) etc. E aqui começamos a decidir o que é mais importante - código agradável (na forma de funções - para que mais tarde entendamos o que escrevemos) ou velocidade de sua execução (cópia de fragmentos semelhantes - para que seu loop possa funcionar o tempo todo antes que o próximo tick chegue).

É claro que em cada caso - a decisão da linha média dourada é diferente, mas.... Quem soluciona este problema?

 

Coloquei os resultados de um pequeno estudo no mesmo tópico na primeira página. Com minha quantidade de cálculos (é pequena) estou bastante satisfeito com as funções - mesmo com o comprimento de uma linha. Mas também há outras opiniões aqui no fio da meada.

 
Não é isso que eu quero dizer... Quero dizer o quanto o estilo de codificação é afetado pela necessidade de considerar as restrições externas da plataforma (qualquer - não apenas a MT)
 

Provavelmente tem um efeito. Eu costumava considerar a antiga língua Trubo Pascual como ideal. Aí é possível estruturar funções, ou seja, declaração de funções em funções. C não permite isso. E estou tentando fazer algo semelhante neste momento, mas essencialmente na plataforma C. Naturalmente, esta é apenas uma aparência externa.

Mais preciso agora, Sergei?

 

Раньше я считал идеальным древний язык Трубо Паскуаль. Там есть возможность структурирования функций, т.е. объявление функций в функциях.

Como diabos é isso? Pessoalmente, comecei a aprender linguagens de programação no meu tempo com a C. Agora eu conheço dois deles: C e C++. E devo dizer que não me sinto nada atraído por estudar nenhum outro idioma. Por que eu tenho que declarar função em função? Pessoalmente, como cresci apenas em C e C++, não entendo este método.

 
C-4 >> Por que você precisa declarar uma função em uma função? >> Pessoalmente, como cresci apenas em C e C++, não entendo este método.

Mas agora eu entendo isso. Se eu tiver funções até a sexta ordem de chamada, nem sempre é conveniente para mim agrupar todas as funções das diferentes ordens de chamada em uma pilha. Ela perde a visão geral da estrutura da chamada. E em Trubo Pasqualee, é tudo conveniente com isto: algumas funções principais que realizam o processamento de chaves, e todas as pequenas subfunções estão escondidas no interior.

Mas provavelmente é uma questão de hábito. Não escrevo nada nele há muito tempo - e não me arrependo muito disso.

 
C-4 >> :

Por que você tem que declarar uma função em uma função? Pessoalmente, como cresci exclusivamente em C, C++ não entendo este método.

"Há muitas coisas no mundo, amigo Horatio, com as quais nossos sábios nunca sonharam" ;)

Há uma beleza nisso - encapsulamento em encapsulamento, por assim dizer. Mas a sério, é uma ferramenta realmente útil, se você a usar com sabedoria, como tudo o mais.

Mathemat eu costumava pensar que a antiga língua Trubo Pascual era perfeita.

Estou pensando em voltar a ele, pelo menos na forma de DLL em Delphi. Estou cansado de trabalhar em MQL para fazer coisas simples, mas necessárias (por exemplo, diálogo trivial com o comerciante).

 

- Qual é a força, irmão!?

- A força está nas classes, irmão!

Acho que ainda não foi inventado nada melhor do que as aulas. Declarar funções privadas dentro da classe, e funções públicas para trabalhar com ela. É agradável e poderoso. Herdar funções e variáveis, pensar através da hierarquia. Encapsular dados criando estruturas de dados complexas. Processar os dados usando os algoritmos universais da biblioteca de modelos padrão. Francamente falando, o encapsulamento é muito pobre em MQL4. Você tem que manter diferentes tipos de dados separadamente, o que leva a erros. Muitas vezes temos que observar a indexação de matrizes (um erro terrivelmente irritante). Acho que isto será interrompido na MQL5.

Razão: