Pergunta

Eu acho que estou em um pouco de uma situação única: Eu tenho uma quantidade razoável de codificação experiência em C / C ++ em ambiente Linux. No entanto, eu realmente não tenho "experiência do projeto." Por exemplo, eu estou familiarizado com o conceito de controle de versão, mas eu nunca usei qualquer. Ou, eu nunca trabalhei em um projeto com mais de arquivos meia dúzia de origem.

Então, onde estou agora é que eu estou trabalhando neste projeto com uma grande quantidade de código já existente. Eu tenho que escrever todo o meu código em um ambiente Windows utilizando o Visual Studio 2008 (Visual C ++ para ser mais específico) Então, eu tenho algumas perguntas:

Como integrar o código já existente em VC ++? Eu estou usando tartaruga SVN e eu tenho todo o código na minha máquina ...

Alguém tem algum conselho geral sobre movendo-se de pequenos projetos para projetos maiores?

Qualquer ajuda / conselho seria muito apreciada

Foi útil?

Solução

Algumas das chaves para se confrontar com uma grande base de código:

  • Saiba os prós e contras de controle de origem. Por agora, começar com apenas aprender todo o SVN comandos trabalho. SVNBook é um bom recurso para isso. Use VisualSVN ou um plugin semelhante para interagir com seu repositório dentro de seu IDE (Tortoise ainda é útil quando você quiser interagem de outro lugar). Abaixo da estrada, você vai querer tornar-se intimamente familiarizado com ramificação e mesclagem (e os ferramentas para fazê-lo rapidamente e corretamente), e talvez aprender (sistema de controle de versão distribuído) DVCS como Git ou Mercurial . Esta vontade, no mínimo, expandir sua mente um pouco, e provavelmente lhe ensinar algumas lições que serão úteis mesmo em projetos onde você usa mais tradicional (centralizada) de controle de versão.
  • Aprenda a olhar rapidamente para as coisas, encontrar as declarações das classes desconhecidas e variáveis, e traçar a execução do aplicativo maior. Existem muitas abordagens para isso, e provavelmente você vai usar a maioria deles em um ponto ou outro, mas alguns deles são built-in características do seu IDE (a maioria deles são bastante robustos a este respeito, você deve ser capaz de botão direito do mouse em um nome de classe e encontrar sua declaração facilmente), grep e similares ( ack é uma variante que seja muito adequado para spelunking código), e cTags se você balançar dessa forma (C / C ++).
  • Saiba as noções básicas de teste de unidade, talvez até mesmo experimentar um quadro como NUnit . Pessoalmente, eu não sou grande em testes de unidade, mas reconheço a sua utilidade e muitos juram por eles, para que não parem com isso até você já tentou fazê-lo, pelo menos.
  • Mesmo se você é um programador impecável com uma bateria robusto de testes de unidade, grandes bases de código exigem um maior nível de depuração habilidade, devido à complexidade inerente dos problemas que surgem. Quer se trate de aprender a escrever de forma concisa, depurar descritivo printf()-like declarações, tornando-se mais familiarizado com o seu depurador, ou mesmo aprender os meandros do seu idioma (por exemplo, os casos de canto do modelo de sistema de tipo / objeto) pode ser útil para descontrair estas questões complexas.

Infelizmente, eu não tenho usado Visual Studio, mas acho que para conhecer fluxo de importação do projeto / migração do seu IDE será instrutivo também. Talvez alguém vai dialogar com mais conselhos concretos nessa frente. O processo pode ser oneroso, especialmente se você tivesse um sistema de compilação personalizado não-padrão antes e você quer que tudo seja feito da One True Visual Studio Way doravante, mas as ferramentas para a extração de dependência automática a partir do código estão ficando melhor e melhor.

Outras dicas

As ideias já dadas são muito bons. Mas você também pode querer ler de Mike Gunderloy Coder para desenvolvedor . De sua descrição de sua experiência atual, acho que você vai encontrá-lo útil. Leia também The Pragmatic Programmer ; Eu mantê-lo em meu escritório por minha mesa, e muitas vezes encontro-me emprestando para os desenvolvedores mais jovens.

Apenas mergulho dentro. Espero que quem tem vindo a trabalhar neste projeto até agora organizado o código em grupos lógicos (namespaces, hierarquias de classe, pastas).

Eu vou também segundo Matt J em aprender como usar o IDE: Eu não estou familiarizado com o Visual Studio especificamente, mas deve haver itens de menu de contexto quando você clica em uma classe ou método para levá-lo ao lugar onde foi declarado, e de lá para as classes que foi derivado de.

Get controle de versão configurar primeiro embora: você vai se sentir picar mais confortável em torno de uma vez que você aprender a "revert";)

Eu tenho usado VisualSVN por um bom tempo, sem problemas. Ele se integra perfeitamente com vs2008. Como para passar para os grandes projectos, uma ótima maneira de ver como as coisas são feitas é baixar a fonte de um projeto existente tamanho decente e ver como ele foi elaborado. Depois que você tem uma boa idéia de como as coisas são estruturadas, a melhor coisa que você pode fazer por si mesmo é Código de gravação . Brainstorm um projeto e ir para lá. Dependendo de como você se sente sobre o seu resultado após a conclusão, você pode usá-lo como parte de sua carteira também.

Os testes de unidade. Usá-los ou você vai se arrepender.

Conheça Visual Studio bem, se você viver nele, você realmente tem que conhecê-lo bem.
AnkSVN é um plug-in gratuito para o Visual Studio 2008, e ele funciona muito bem. Além disso, Refator para C ++ é outro encaixe livre e um do únicas maneiras de obter refatoração suporte no Visual C ++.

Além disso, você vai aprender mais rápido que em grandes projetos, 80% do seu tempo vai ser gasto para fazer a manutenção do código, então faça um favor e fazer o seu código de um lugar em que você quer viver, não um lugar de terror que você recuar a partir. código limpo, o comentário ocasional, e testes de unidade irá percorrer um longo caminho para fazer você querer se levantar e ir trabalhar na parte da manhã, em vez de temendo que você tem que trabalhar sobre isso monstruosidade onde a qualquer momento você tocar em nada que quebre.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top