在大型图书馆工作的提示?

时间:2008-09-01 21:00:02

标签: project-management

我目前正在开发一个相当大的库(5M行代码,在VS2005下的C ++中,1个解决方案和接近100个项目)。即使我们分发编译,并使用增量链接,重新编译和重新编辑后,小的源修改需要几分钟(通常至少3)和接近一小时。

这意味着我们的修改代码/构建/调试周期往往很长(根据我的口味!),并且在构建期间很容易丢失'流':通常没有太多时间做任何有用的事情(也许做一些电子邮件,否则在网上阅读一些文章或一本书的几页。

在编写新代码或进行重大重构时,我尝试一次只编译一个文件。但是,在调试期间,它确实让我感到紧张!

我想知道如何优化我的时间?我想我不是那种情况下的唯一一个:做什么?

3 个答案:

答案 0 :(得分:1)

我对这个级别的开发知之甚少,但是......看起来分成多个解决方案似乎是个好主意。如果您/您的客户真的坚持,您可以进行最终的“预发货”步骤,将它们整合到单个.dll中。

比较,例如,.NET Framework,我们有很多不同的程序集(System,System.Drawing,System.Windows.Forms,System.Xml ......)。据推测,所有这些都可能在不同的解决方案中,引用彼此的构建结果(而不是单个解决方案中的所有解决方案,相互引用作为项目)。

答案 1 :(得分:1)

一步一步......

唯一的解决方案是开始隔离代码块。如果你没有太多的实现泄漏(见下面的**),那么就开始建立隔离后面类的fachades。将这些clases移动到另一个项目并使fachade在启动时加载dll并将调用重定向到工厂方法。

专注于寻找相当稳定的区域/库并将它们分离到孤立的库dll。单独构建和版本化将帮助您避免集成的痛苦。

过去我一直处于这种状况,唯一的方法是耐心地完成任务。

顺便说一句,分割代码的一个好的副作用是接口变得更干净,输出dll的大小更小!!在我们的项目中填充/重新组织代码并减少无偿的数量包括将最终输出减少30%。

祝你好运!

** - >消费者调用obj-> GetMemberZ() - > GetMemberYT-> GiveMeTheData(param1,param2)

答案 2 :(得分:0)

@Domenic:确实,这将是一件好事......但是,整个团队现在已经有一段时间了,直到他们成功,我们仍然坚持使用单个.dll和一些非常单一的东西: - (< / p>