7

我认为我处于某种独特的境地:我在 Linux 环境中拥有相当多的 C/C++ 编码经验。但是,我并没有真正的“项目经验”。比如我对版本控制的概念很熟悉,但是我从来没有用过。或者,我从来没有参与过包含超过六个源文件的项目。

所以,我现在的位置是我正在处理这个项目,并且已经存在大量代码。我必须使用 Visual Studio 2008(具体来说是 Visual C++)在 Windows 环境中编写所有代码所以我有几个问题:

如何将现有代码集成到 VC++ 中?我正在使用乌龟 SVN,我的机器上有所有代码......

有没有人对从小项目转移到大项目有任何一般性建议?

任何帮助/建议将不胜感激

4

6 回答 6

3

掌握大型代码库的一些关键:

  • 了解源代码控制的来龙去脉。现在,从了解所有 SVN 命令的工作原理开始。 SVNBook是一个很好的资源。使用VisualSVN或类似的插件在 IDE 中与您的存储库进行交互(当您想从其他地方进行交互时,Tortoise 仍然很有用)。以后,您将需要非常熟悉分支和合并(以及用于快速正确执行此操作的工具),并且可能需要学习 DVCS(分布式版本控制系统),例如GitMercurial。这至少会扩展您的思维,并且可能会教您一些即使在您使用更传统(集中式)版本控制的项目中也会有用的课程。
  • 了解如何快速查找内容、查找不熟悉的类和变量的声明以及跟踪更大应用程序的执行。有很多方法可以解决这个问题,您可能会在某个时候使用其中的大多数,但其中一些是您的 IDE 的内置功能(其中大多数在这方面非常强大,您应该能够右键单击一个类名并轻松找到它的声明)grep等(ack是一个非常适合代码探索的变体),如果您以这种(C / C ++)方式摆动,还有CTAGS 。
  • 学习单元测试的基础知识,甚至可以尝试像NUnit这样的框架。就我个人而言,我对单元测试并不感兴趣,但我认识到它们的实用性并且很多人都对它们发誓,所以至少在你尝试之前不要敲它。
  • 即使你是一个拥有大量单元测试的完美程序员,由于出现问题的内在复杂性,大型代码库也需要更高水平的调试技能。无论是学习如何编写简明的、描述性的类似调试printf()的语句,更加熟悉你的调试器,甚至学习你的语言的来龙去脉(例如类型系统/对象模型的极端情况),都有助于解开这些复杂的问题。

不幸的是,我没有使用过 Visual Studio,但我认为了解你的 IDE 的项目导入/迁移流程也会很有启发性。也许其他人会在这方面提出更具体的建议。这个过程可能很繁重,特别是如果您之前有一个非标准的自定义构建系统并且您希望今后一切都完成 The One True Visual Studio Way,但是从代码中自动提取依赖关系的工具越来越好。

于 2009-03-18T01:27:37.920 回答
3

已经给出的想法非常好。但您可能还想阅读 Mike Gunderloy 的Coder to Developer。根据您对当前经验的描述,我认为您会发现它很有用。另请阅读实用程序员;我把它放在办公桌旁边的办公室里,经常发现自己把它借给年轻的开发者。

于 2009-03-18T01:34:54.143 回答
1

只是潜入。希望到目前为止一直在这个项目上工作的人将代码组织成逻辑组(命名空间、类层次结构、文件夹)。

我还将在学习如何使用 IDE 方面支持 Matt J:我并不特别熟悉 Visual Studio,但是当您单击类或方法时应该有上下文菜单项以将您带到声明它的位置,并从那里到它派生的类。

不过先设置版本控制:一旦你学会了如何“恢复”,你会感觉更舒服;)

于 2009-03-18T01:30:10.427 回答
0

我已经使用VisualSVN很长一段时间没有问题。它与vs2008完美集成。至于继续进行大型项目,了解事情是如何完成的一个好方法是下载一个体面大小的现有项目的源代码,然后看看它是如何组合在一起的。在您对事物的结构有了一个很好的了解之后,您可以为自己做的最好的事情就是编写代码。头脑风暴一个项目,然后去做。根据您对完成后结果的感觉,您也可以将其用作投资组合的一部分。

于 2009-03-18T01:25:52.153 回答
0

单元测试。使用它们,否则你会后悔的。

于 2009-03-18T01:26:03.260 回答
0

好好了解Visual Studio,如果你生活在其中,你真的必须好好了解它。
AnkSVN是 Visual Studio 2008 的免费插件,效果很好。此外,Refactor for C++是另一个免费插件,也是在 Visual C++ 中获得重构支持的唯一方法之一。

此外,您很快就会了解到,在大型项目中,您 80% 的时间都将花在代码维护上,所以请帮自己一个忙,让您的代码成为您想要居住的地方,而不是让您感到恐惧的地方退缩。干净的代码、偶尔的评论和单元测试将大大有助于让你早上起床去工作,而不是害怕你必须在任何时候触碰任何东西都会破坏的怪物上工作。

于 2009-03-18T06:26:54.190 回答