Como se tornar um bom programador (Parte 1): cinco hábitos que devem ser abandonados para programar melhor em MQL5
Introdução
Para nos tornarmos melhores programadores, precisamos aprender a programar 24/7, abandonar hábitos ruins, desenvolver outros bons, assimilar as práticas recomendadas e, possivelmente, reaprender os princípios fundamentais da programação. Tudo isso é importante para quem deseja construir uma carreira de sucesso como programador. Quando sabemos o como e o porquê, estamos cientes do que estamos fazendo, o que nos ajuda a desenvolver nossa capacidade de reter informações e a obter uma melhor qualidade de código.
Aqui veremos alguns métodos comprovados que podem aprimorar nosso estilo de programação quase que instantaneamente. Para atingir este objetivo, bastará lermos este artigo com atenção e colocarmos as dicas propostas em prática.
1. Evite copiar código a torto e a direito
“O prazer mais nobre é a alegria de entender”, - Leonardo da Vinci.
Este é um hábito, acima de tudo, dos programadores novatos, mas às vezes os experientes também pecam. Quando comecei a programar em 2019, passei a maior parte do meu tempo pesquisando nos fóruns um "código que funcionasse". Eu não prestava atenção aos comentários nem às explicações que acompanhavam exemplos específicos. O único detalhe no qual eu reparava era qualquer comentário do tipo "esse código funciona, valeu!" - buscava qualquer comentário de agradecimento (especialmente se vinha da pessoa que inicialmente havia pedido ajuda no fórum). O que você acha que eu fazia quando encontrava um trecho de código de jeito? É isso mesmo, eu só copiava.
Agora que me apercebi disso, tenho vergonha de admitir que um dia comentei no fórum que a biblioteca padrão não estava funcionando.
Agora é que sei por que o código não funcionava. O motivo era eu. Só porque copiava esse código de algum lugar (não me lembro de onde). Eis o que tenho a dizer:
Você deve sempre entender o que está fazendo. Não vale a pena copiar o código do fórum a esmo e colá-lo com o intuito de resolver rapidamente seus problemas só porque esse código já funcionou uma vez.
Na maioria dos casos, as pessoas com o hábito de copiar realmente não gostam das respostas de desenvolvedores experientes, que, em vez de replicar, geralmente dão um link para a documentação do MQL5, para que possam estudar o tópico da pergunta por si mesmas. E certamente elas não clicam nos links que são adicionados automaticamente aos comentários no fórum. Muitos problemas surgem precisamente quando não queremos estudar o assunto em detalhes e não entendemos o básico.
O truque é sempre fazer todo o possível para entender, em vez de simplesmente buscar a solução!
Programar será mais fácil e o próprio processo se tornará mais natural se você entender a própria essência.
O hábito de copiar simplesmente pode não só prejudicar sua reputação, mas também criar mais problemas do que resolverá.
2. Não tente burlar o problema
Antes de procurar soluções para o seu problema, você precisa entender os motivos pelos quais ele ocorre. Depois de entendê-los, você conseguirá fazer as perguntas certas no fórum, e não postar código na esperança de obter como resposta uma solução testada. Afinal, o problema pode estar relacionado com que você simplesmente não entende o que nem o porquê está escrevendo. Novamente, veja apenas o meu exemplo: uma vez copiei um código para alterar o template do meu gráfico sem entender ou saber absolutamente nada sobre como trabalhar com gráficos via biblioteca padrão. Adivinhe como acabou isso. Acabei por escrever no fórum que a biblioteca não estava funcionando.
Sempre que você encontrar um problema ou erro, certifique-se de entender todas as bibliotecas e o código que não está funcionando. Existem diferentes maneiras de encontrar informações úteis em MQL5. As principais são:
- Documentação MQL5
- Fórum
Felizmente, temos uma excelente documentação com todas as informações de que você precisa. Os programadores profissionais a conhecem e a utilizam. Já para iniciantes, vou escrever como encontrá-la rapidamente: abra o MetaEditor, menu Ajuda e selecione Referência MQl5.
É aqui que você pode encontrar tudo o que não está em seu código. Você pode obter informações valiosas se compartilhar seus problemas com outros desenvolvedores. Mas você não tem que repetir meus erros e copiar o código deles a torto e a direito.
Os iniciantes estão no que eu chamo de "noob's cycle" (ciclo do novato).
3. Desista do perfeccionismo
"Feito é melhor que perfeito" (ideia popular do Vale do Silício).
Quantas vezes não hesitei em postar meus desenvolvimentos justamente por causa do perfeccionismo. Tentava encontrar o Santo Graal para o compartilhar no site com outros usuários. Demorei a perceber que se você tem algo para compartilhar, você tem que compartilhar, e não viver cheio de incertezas.
É melhor escrever um indicador, EA, biblioteca ou trecho de código nos próximos anos ou criar centenas de soluções imperfeitas?
Melhor escrever um código de boa qualidade e compartilhá-lo, em vez de escrever um código perfeito para você. Você sempre terá tempo e oportunidade para melhorar seu código se precisar de aprimoramento. É com isso em mente que você simplesmente criará o código mais rápido e economizará muito tempo.
Esta é uma prática normal. Essa abordagem pode ser observada em tudo que encontramos na vida cotidiana:
- Aplicativos móveis são constantemente atualizados
- Atualizações de sistemas operacionais de computadores e telefones são lançadas constantemente
- Até mesmo linguagens de programação como MQL5, Python e outras são atualizadas periodicamente
Se as linguagens de programação e estruturas são atualizadas constantemente, é normal continuar trabalhando o produto e melhorá-lo.
O mesmo se aplica ao site MQL5.com. Por exemplo, os produtos vendidos no Mercado também são atualizados periodicamente.
No fórum, você pode alterar publicações, excluir ou atualizar respostas e até mesmo excluir comentários.
4. Evite escrever código intelectualoide
"Depurar é duas vezes mais difícil do que escrever o código. Portanto, se você escrever o código da maneira mais intelectual possível, você, por definição, não será inteligente o suficiente para depurá-lo", - Brian Kernighan.
Um código bem escrito com práticas aprendidas na documentação já é bom o suficiente!
Escreva um código simples, claro e fácil de ler e entender. Ninguém, incluindo você, se beneficiará com seu código intelectualóide após três meses. Às vezes, pode ser muito difícil trabalhar com ele, e aqui os desenvolvedores autônomos concordarão comigo. Já aconteceu alguma vez de você precisar consertar um Expert Advisor com base no código de outra pessoa ou refazer o código da Biblioteca? Ocasionalmente isso será muito difícil, porque será inviável entender o código em si. Não me interpretem mal, nem estou julgando ninguém nem estou encorajando a escrever código simples para resolver problemas complexos. Só quero salientar que sempre podemos facilitar o trabalho, mesmo com códigos complexos (acho que é aí que reside a criatividade). Neste caso, um código claro pode ser capaz de nos ajudar.
Eis algumas dicas sobre como escrever um código claro:
- Use o estilizador de código
- Mantenha o nexo lógico
- Comente
- Siga o princípio DRY
Estilização:
Como exemplo, veja esta função que conta as posições por tipo
int CountPosByType(ENUM_POSITION_TYPE type){ int counter = 0; for (int i=PositionsTotal(); i>=0; i--) if (m_position.SelectByIndex(i)) if (m_position.Magic()==MagicNumber && m_position.Symbol()==Symbol() && m_position.PositionType()==type) { counter++; } return counter; }
Ela é bastante simples e fácil de entender. Mas não atende aos requisitos de código claro. Por isso, vamos aplicar o estilizador. Basta clicar no botão azul em forma de pente, no MetaEditor, e "pentear" o código.
Assim fica o código com os estilos certos:
int CountPosByType(ENUM_POSITION_TYPE type) { int counter = 0; for(int i=PositionsTotal(); i>=0; i--) if(m_position.SelectByIndex(i)) if(m_position.Magic()==MagicNumber && m_position.Symbol()==Symbol() && m_position.PositionType()==type) { counter++; } return counter; }
Basta aplicar o estilizador para melhorarmos a legibilidade do código, dispensando alterar o código em si. Este é apenas o primeiro passo para tornar o código mais amigável. E como agora o código é fácil de ler, ele também pode ser alterado, ponto.
Mantenha o nexo lógico:
Você nem consegue imaginar quantas vezes criei inúmeras variáveis para trabalhar com funções em níveis diferentes. Em vez disso, apenas precisamos criar uma variável global. Além disso, para maior comodidade, é bom usarmos nomes de função simples, claros e lógicos, graças aos quais, mesmo após algum tempo, podemos entender facilmente o que a função faz. Isso aumenta significativamente nossa produtividade, já que se já tivermos usado todas as funções em questão nos nossos projetos, não precisaremos recriá-las, bastará simplesmente copiá-las.
Vamos chamar nossa função assim:
int CountPositionsByType(ENUM_POSITION_TYPE type)
Como tentamos manter o nexo lógico, essa função pode ser encontrada por meio de uma pesquisa em arquivos.
A pesquisa permite encontrar funções dentro de seus EAs e Indicadores. Na próxima vez que você precisar da função novamente, basta copiar o código a partir dos arquivos encontrados.
A melhor maneira de escrever um bom código é usar POO (programação orientada a objetos).
Usar funções prontas simplifica e acelera o processo de escrita de código, além disso, elas só precisam ser depuradas uma vez.
Comente:
Para iniciantes, pode parecer que os comentários são irrelevantes. No entanto, eles podem afetar significativamente sua produtividade. Eles não apenas melhoram a legibilidade do código, mas também podem servir como um lembrete de, por exemplo, o que uma função faz.
Vamos definir nosso contador novamente adicionando um comentário:
int counter = 0; // Variável para armazenar o número de posições
Da próxima vez, para usar o contador, você só precisa fazer o seguinte:
Siga o princípio DRY
DRY é o acrônimo em inglês para "don't repeat yourself", isto é, não se repita. A POO ajuda muito a seguir esse princípio. Você não precisa criar muitas funções que façam praticamente a mesma coisa. Por exemplo, não faz sentido escrever uma função que verifica a existência de uma posição por tipo se você já tem uma função pronta para contagem de posições por tipo.
5. Não tente escrever o código mais curto possível
"O código deve ser legível antes de tudo. Tudo o resto virá mais tarde."
Alguns desenvolvedores acreditam que um bom código só funciona se contiver o mínimo de linhas possível e o mínimo de caracteres numa linha. Porém, isso não é verdade.
O código escrito será lido dezenas ou centenas de vezes, por isso você deve se esforçar para escrever um código legível e claro, mesmo que se torne mais longo.
Às vezes, a brevidade do código está associada à preguiça (esse era o meu caso). Implementaremos a solução mínima necessária, apenas para concluir, por exemplo, um pedido do Freelance ou qualquer outra tarefa.
O código deve ser amigável. Ocupe-se de que as variáveis de entrada sejam compreensíveis, trate de todas as exceções corretamente, notifique o usuário sobre parâmetros incorretos, como um valor de variável nulo que faria com que o programa funcionasse incorretamente.
Eis o que tenho a dizer:
Códigos de erro, valores de retorno, erros de compilação e exceções do sistema funcionam só para você, mas não para o usuário. Por isso, certifique-se de incluir no código a exibição de notificações aos usuários, comentários no gráfico e outras informações. Ao fazer isso, veja que o usuário receba apenas as informações que se destinam especificamente a ele e que o ajudarão a resolver problemas.
Não há necessidade de implementar todas as funções informativas a partir do zero - existe uma maneira mais conveniente. Você pode armazenar toda essa funcionalidade em arquivos de inclusão separados ou copiar e colar o código necessário no local.
Conclusão
Nem sempre é fácil seguir as regras de uma programação boa e amigável. Mas se você torná-las um hábito, elas estarão com você ao longo de sua carreira de programação.
Obrigado pela atenção!
Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/9643
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Obrigado amigo, tive esses mesmo problemas quando estava começando a programar, ainda sou iniciante contudo. Consegui aprender algumas coisas boas com o seu artigo
Caracaaa, olhei pro comentario e falei "Ué, eu nem comentei nada" kkkkkkkkkk
Boa sorte na caminhada, xará .
Também tô começando minha trajetória como dev.