Recentemente, comecei a aprender C ++ e gosto muito disso.
Eu sempre li que é mais fácil escrever código ruim em C ++ do que na maioria dos idiomas, e que é muito mais profundo do que parece.
Como eu gostaria de evitar escrever código incorreto, fiquei pensando o que exatamente não deveria fazer e o que devo fazer para escrever um código bom em C ++.
Respostas:
As armadilhas
Existem tantas armadilhas no C ++ que, se você não as conhecer, criará um código muito instável, com toneladas de vazamentos de memória e saturação de buffer. Comparado a idiomas mais modernos com coleta de lixo, você deve liberar toda a memória. Além disso, o código é de nível muito baixo. Não há nada que o impeça de sobrescrever seu próprio código de programa (que foi explorado por muitos hacks do IE).
Portanto, o próximo passo a ser aprendido são as práticas de programação que atenuam esses riscos, por exemplo, usando ponteiros inteligentes para lidar com a liberação de objetos, agrupando matrizes de bytes em classes que lidam com os dados, etc.
Posso recomendar os livros de Scott Meyers "Effective C ++" e "More Effective C ++".
Esses livros me ensinaram essencialmente a beleza do C ++. Observe que estes não são livros para iniciantes. Eles assumem que você já está familiarizado com o idioma.
fonte
Expressões idiomáticas
O C ++ suporta uma grande variedade de recursos. Da mesma forma, pode-se facilmente tentar usá-lo de muitas maneiras ou estilos diferentes. Infelizmente, isso não se adequa a muitos deles - e, portanto, torna-se tedioso, propenso a erros ou lento.
Ou formulado de maneira diferente, sem realmente saber o que você faz, é incrivelmente fácil usar o C ++ de maneira errada (o que seria muito melhor suportado em outros idiomas). Portanto, aprender com simplicidade pode levar a uma direção errada - portanto, a leitura de bons livros é provavelmente mais importante do que em outros idiomas (consulte esta postagem sobre o mesmo tópico).
Java, por exemplo, é uma linguagem inerentemente orientada a objetos. Você não pode programar isso muito diferente disso. Em C ++, no entanto, você pode . Você pode usá-lo como faria em C ou Java - e de nenhuma maneira é o que o C ++ se destaca, portanto é melhor ficar com C ou Java nesses casos.
Portanto, você realmente precisa conhecer o estilo e os idiomas adequados para obter o C ++ correto, desde o início. Infelizmente, eles podem ser bastante complexos no começo, mas aqui estão alguns - do simples ao avançado.
const
inline
uma função<<
ou*
etc.?)void*
). Use referências ou ponteiros inteligentesfonte
O poder do C ++ é que é uma linguagem incrível. A desvantagem do C ++ é que é uma linguagem incrível. Pode ser ao mesmo tempo imponente e terrível.
Se você quer aprender - e não há razão para não aprender - precisará aprender bem. Você precisará ler muito . Existem alguns livros que ajudarão você no seu caminho: C ++ acelerado o ajudará a começar, especialmente se você fizer os exercícios. C ++ efetivo, STL efetivo, C ++ excepcional e suas séries contínuas estão entre os melhores do jogo para obter dicas de como melhorar suas maneiras de trabalhar.
fonte
Eu acho que uma coisa que ajudará no seu caminho de bom código é a experiência . Por enquanto, fique preso no idioma e não se preocupe muito com as "melhores práticas de codificação" até que você esteja confortável o suficiente para começar a procurar maneiras de melhorar seu uso. Você aprenderá a reconhecer o que é bom e o que é ruim. Depois de baixar o idioma, você pode olhar para trás e pensar "ok, eu deveria ter implementado isso de forma diferente" ou "isso parece confuso, como posso melhorar isso?"
Penso assim : se você aprende um novo idioma falado, não se aprofunda e aprende todas as regras gramaticais antes de começar a aprender palavras simples ou como dizer "onde fica o ponto de ônibus?". A programação (IMO) é como um segundo idioma (ou terceiro, quarto, etc). Trate-o como faria em qualquer outro idioma e aprenda fazendo. O resto virá com o tempo.
fonte
esclarecimento: em C ++ é mais fácil escrever código incorreto sem querer do que em outras línguas. Você pode escrever código incorreto em qualquer idioma, mas em C ++ você define com as melhores intenções, mas geralmente acaba em algum lugar inesperado porque C ++ - depois de passar de "iniciante" para dizer "iniciante avançado", você tem a falsa impressão de que C ++ é mais fácil do que realmente é. Mas o C ++ está evoluindo e todas as novas bibliotecas de modelos tornam sua vida mais fácil (e segura).
fonte
Duas coisas:
fonte