Sou estudante de ciência da computação e, como resultado, fui ensinado C ++ como uma versão melhor do C com aulas. Acabo tentando reinventar a roda sempre que uma solução para um problema complexo é necessária, apenas para descobrir algum tempo depois que algum recurso de linguagem ou alguma rotina de biblioteca padrão poderia ter feito isso por mim.
Estou bem à vontade com meus char*
e meus *(int*)(someVoidPointer)
idiomas, mas recentemente, depois de fazer uma (menor) contribuição para um projeto de código-fonte aberto, sinto que não é assim que alguém deve pensar ao escrever código C ++. É muito diferente de C.
Considerando que conheço bem a programação orientada a objetos e estou bem com uma curva de aprendizado acentuada, o que você sugeriria para que eu pensasse na pista de C ++ quando codificasse C ++?
Respostas:
Com base nos seus comentários, você conhece a sintaxe C ++.
Você não está codificando em C ++, mas o que geralmente é chamado de C com classes.
A tag C ++ no stackoverflow é um bom ponto de partida, inclui uma lista de leitura e perguntas frequentes .
A única maneira real de aprender é escrever código e fazer com que usuários experientes comentem. Você pode colocar seu código aqui para revisão. Um bom exemplo
Pare de usá-los, alterne para std :: string.
Pare de usá-los (além de fazer interface com o código C). O uso do conceito de functor oferece várias vantagens (incluindo a idéia de encapsular o estado).
Sim. C e C ++ divergiram como idiomas. Embora você possa usar praticamente a mesma sintaxe, o que é considerado bom código C geralmente não é considerado bom código C ++ (ou vice-versa).
Você tem o básico básico.
Com muito trabalho :-)
fonte
O livro Effective C ++ ensina uma série de coisas interessantes e o levará a apreciar os recursos do C ++. Também existe um STL eficaz - eu não o li, mas tenho certeza de que seria uma ótima leitura se você não estiver familiarizado com o STD.
O importante a aprender é que você deve usar o idioma e não reinventar a roda constantemente . Você já aprendeu como fazê-los, facilite para si mesmo (e para os outros!) E use ferramentas para todo o seu potencial.
Como uma observação lateral, você encontrará muitas pessoas que exigem o uso de DST. Isso é tão ruim de mentalidade quanto usar apenas
char*
- às vezes não é a ferramenta correta e existem muitas outras por aí. No mesmo sentido, não desanime de criar suas próprias classes de contêineres - se você estiver usandochar*
o melhor lugar para fazê-lo, ele estará envolvido com segurança dentro de uma classe.fonte
Eu posso recomendar o recente BUILD tomado por Herb Sutter. Aquele chamado " Escrevendo código C ++ moderno: como o C ++ evoluiu ao longo dos anos ":
Não é uma apresentação ruim, nem muito longa, tem algumas dicas interessantes para os novos recursos do padrão mais recente, o que daria algumas dicas para atualizar seu antigo estilo C / C ++.
Além disso, você precisa aprender o STL - não é complicado e há muitos livros, por exemplo, STL eficaz, ou apenas os tutoriais do STL no Google para ajudá-lo.
fonte
Li C ++ acelerado por Andrew Koenig e Barbara Moo para me ajudar a ensinar C ++, depois de trabalhar com C ++ por quase uma década. (Na verdade, eu estava começando a mexer com a meta-programação de modelos naquela época.) Ainda achava que era uma revelação, mesmo que eu não ache que isso tenha me ensinado algum fato novo sobre a linguagem. 1
O que ele me ensinou, porém, foi examinar e usar o C ++ como uma linguagem de alto nível. Para não mexer com ponteiros brutos ee
delete
usar a biblioteca padrão sempre que possível.Tenho a sensação de que é exatamente isso que você procura.
1 Não que não restasse nada para me ensinar naquela época (ainda há muito, uma década depois), mas há tanto conhecimento que você pode espremer em um livro introdutório de 250 páginas.
fonte
Antes de responder - uma observação: Idiomatic C ++ é um alvo em movimento. À medida que o idioma muda, o mesmo acontece com os idiomas. De fato, alguns recursos da linguagem destinam - se a eliminar o código idiomático que pode ser simplificado ou aprimorado com algum suporte da própria linguagem ou, pelo menos, da biblioteca padrão. Portanto, lembre-se de que qualquer fonte só pode informá-lo sobre o que era idiomático no momento da redação .
Dito isto, você faria bem em verificar:
O site codereview.SX
A rede StackExchange possui um site chamado codereview.stackexchange.com . Se você escreveu um pedaço de código C ++ - uma classe, uma parte de uma biblioteca, algo não muito grande - você pode publicá-lo e pedir à comunidade que o revise. Observe que o código precisa compilar e ser basicamente funcional - esse site não é para depuração.
Além disso, você pode procurar por algum código C ++ lá, relacionado ao que está trabalhando, e ver o que os revisores enfatizam. Você pode tentar revisar o código postado sem postar uma resposta e ler o que os outros pensam dele.
Apresentações em vídeo da conferência C ++
Existem várias conferências de desenvolvedores focadas em C ++ realizadas todos os anos:
e esses nem são os únicos ... enfim, cada um desses vídeos postados em muitas / todas as apresentações. Isso o ensinará muito , incluindo alguns códigos idiomáticos e princípios com os quais você pode decidir o que deve ou não ser idiomático.
Às vezes você pode até obter os decks de slides dos alto-falantes.
fonte
Bem, projetos de código aberto são um começo muito bom. Não espere se tornar um programador profissional com base nas suas aulas na universidade, elas não são destinadas a isso (como escrevi na minha resposta aqui ).
Você parece estar ciente da sintaxe, isso é bom. Agora vá e leia o código de outras pessoas e contribua com o seu próprio para análises por pares. Você aprenderá muito lendo o código e tentando entendê-lo, depurando-o e corrigindo-o e, é claro - adicionando a ele as convenções de codificação que já existem.
Livros profissionais também são uma idéia muito boa, como mencionado, e navegar pelas perguntas e respostas no StackOverflow ensinará muito (certamente me ensina muito e eu me considero um profissional de C ++).
fonte
Ler muito bom código C ++ provavelmente ajudará. Você precisa ver o código para começar a sentir isso. Por outro lado, a maior parte do código C ++ está incorreta.
fonte