
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
O código não é portátil - essa é sua peculiaridade. Não se destina a ser portátil. Tem outro propósito. Bem, o escopo global das variáveis é uma ferramenta poderosa para a implementação de mecanismos complexos. Você só precisa saber como utilizá-lo. Quando as pessoas me falam de erros e bugs ocultos, fico confuso. Eu nunca tive nenhum bug relacionado à visibilidade variável global. Em uma palavra, de modo algum.
O problema com variáveis globais é que se o projeto é suficientemente grande e as mudanças no estado dessas variáveis vêm de muitas seções de código, é bastante demorado procurar por bugs.
Exemplo. Um erro é encontrado porque o valor de uma variável global não é claramente o que deveria ser. Há uma dúzia de arquivos e 100500 linhas de código no projeto. Ninguém se lembra de quantos fragmentos de código esta variável muda. O resultado é um frasco de café e um sono sonoro com sua cabeça presa no teclado.
E agora a mesma coisa, mas OOP. Escrevemos o código corretamente e todos os campos são privados. Assim, diretamente é alterado somente nos métodos de classe, e de fora somente pelo método Set. Assim, colocamos pontos de parada no método Set e quantos métodos existem na classe, onde o campo é mudado, e podemos facilmente rastrear onde as mudanças são feitas e onde elas foram mudadas incorretamente.
Eu nunca tive nenhum bug relacionado à visibilidade variável global. De forma alguma.
Eu nem sei como convencê-lo do óbvio, mas provavelmente não deveria, não sou pago por isso, não é mesmo?
O que você está tentando fazer? Bem, se você quer elogios, lá está você:
Peter! Muito bem!
))))
O problema com variáveis globais é que se o projeto é suficientemente grande e as mudanças no estado dessas variáveis vêm de muitas seções de código, é bastante demorado procurar por bugs.
Exemplo. Um bug é encontrado porque o valor de uma variável global não é claramente o que deveria ser. Há uma dúzia de arquivos e 100500 linhas de código no projeto. Ninguém se lembra de quantos fragmentos de código esta variável muda. O resultado é um frasco de café e um sono sonoro com sua cabeça presa no teclado.
E agora temos a mesma coisa, mas é o OOP. Escrevemos o código corretamente e todos os campos são privados. Assim, será alterado diretamente apenas nos métodos de classe, mas de fora apenas pelo método Set. Assim, colocamos pontos de parada no método Set e quantos métodos temos na classe, onde o campo é mudado, e facilmente rastreamos onde as mudanças são feitas e onde elas foram mudadas incorretamente.
Eu nem sei como convencê-lo do óbvio, mas provavelmente não deveria, não sou pago por isso, não é mesmo?
O que você está tentando fazer? Bem, se você quer elogios, lá está você:
Peter! Muito bem!
))))
Bem, talvez compreendendo o fato, que não apenas com o OOP você pode escrever projetos legais. E não apenas ser proficiente em OOP é sinal de um desenvolvedor. Eu não discuto que você pode resolver muitas tarefas com o OOP. Mas existem outras abordagens.
não se trata de OOP, trata-se dos princípios da própria escrita de código, esta é a segunda vez que falo sobre isso e@Vladimir Simakov escreveu um exemplo acima
Se você quiser usar visibilidade variável global - sem problemas, ninguém proíbe, você pode fazê-lo - mas silenciosamente, enquanto ninguém está observando! )))
mas como um estilo de escrita de programas permanentemente usado é maligno, e quanto mais código, mais maligno é! - assim você explicou? )))
SZY: mais uma tentativa de teste - veja a ajuda da MQL, você vê que todas as funções são feitas como unidades separadas e completamente independentes? - passou os parâmetros = obteve o resultado! Você acha que os programadores Metakvot estão fazendo tudo errado novamente? Deveríamos usar alguns estilos livres de funções de escrita - aqui no escopo global, e aqui o usuário chamará a função e obterá o resultado! )))) - o estilo de procedimento (onde cada sub-rotina é um bloco lógico completo) é o código certo, escreva os códigos corretamente! não o código certo ... bem, ele virá por conta própria "quando você precisar dele rapidamente" ;)
Da prática. Eu tenho mais de 100 arquivos conectados em meu projeto. Algumas delas têm mais de 2000 linhas de código. As variáveis globais são utilizadas em todos os lugares. Eu nunca tive nenhum bug relacionado à sua globalidade. Talvez eu tenha me adaptado a isso?))
Nem todos têm essa sorte. Já me lembro vagamente de quais variáveis eu entrei hoje. Não me lembro de quais, de uma semana atrás. Mas isso não é um problema, todos eles são locais e o acesso aos campos de qualquer objeto é feito apenas através de funções apropriadas. O OOP me permite não me lembrar de muitas coisas, eu já disse mais de uma vez - idealmente, em qualquer lugar de código você deve ter acesso apenas ao que você precisa e não mais variáveis - então, mesmo que você queira, não pode mudar o que não deve. E quando você realmente precisar, você terá que descobrir porque não pode acessar uma variável- é apenas uma supervisão, ou mais freqüentemente é uma variável que precisa de trabalho adicional para ser modificada. Se ele estivesse imediatamente disponível para você, você os esqueceria, e então levaria muito tempo para descobrir porque o programa não funciona ou não funciona como você quer.
Eu não estou tentando conseguir nada. Bem, talvez entendendo que não é só com o OOP que você pode escrever projetos legais. E não é apenas o domínio do OOP que é sinal de um desenvolvedor. Eu não discuto que você pode resolver muitas tarefas com o OOP. Mas existem outras abordagens.
Outra coisa boa do OOP é que você gradualmente adquire bibliotecas de classe, especialmente as realmente universais, que permanecem com você durante toda sua vida e facilitam esta vida.
A partir de um projeto real, ele realmente funciona. Aqui não há inconvenientes, você só precisa monitorar o número e o status dos pedidos/posições disponíveis. Esta função somente controla que a posição/ordem não seja fechada/cancelada e a retira da lista após o fechamento.
Onde gPos é CList<CTrade> gPos
CList e CTrade não são da biblioteca padrão.
CTrade é herdada de minha própria biblioteca CPosition.
Na verdade, abaixo está todo o CTrade que você precisa apenas para tornar seu código de projeto legível:
Toda a implementação do tratamento da ordem/posição está oculta no arquivo da biblioteca de CPposições da plataforma cruzada.Obrigado a todos vocês por participarem da discussão. Vou tentar mergulhar no OOP a fim de realmente comparar as capacidades das duas abordagens. Estou interessado na hierarquia que o OOP pode proporcionar, e se a utilidade dela não estiver enterrada sob sua sintaxe, certamente vou adotá-la.
Sirva-se no YouTube. Há muita coisa aí. Especialmente em inglês, com o qual você é bom.
Não poupe 45 minutos, Peter. No início, é muito importante entender do que este indivíduo está falando. Muitas pessoas provavelmente discutirão com ele, mas em geral ele está certo:
Sirva-se no YouTube. Há muita coisa aí. Especialmente em inglês, com o qual você é bom.
Não poupe 45 minutos, Peter. No início, é muito importante entender do que este indivíduo está falando. Muitas pessoas provavelmente irão discutir com ele, mas em geral ele tem razão: