4

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

这意味着我们的修改代码/构建/调试周期往往非常长(根据我的口味!),并且在构建过程中很容易失去“流程”:通常没有太多时间做任何有用的事情(也许做一个一些电子邮件,或者阅读一些在线文章或几页书)。

在编写新代码或进行重大重构时,我尝试一次只编译一个文件。但是,例如在调试期间,它真的让我很紧张!

我想知道如何优化我的时间?我想我不是唯一一个处于这种情况的人:你会/会什么?

4

3 回答 3

1

我对那个级别的开发知之甚少,但是......似乎将其分成多个解决方案是个好主意。如果您/您的客户真的坚持,您可以进行最后的“预发布”步骤,将它们全部合并到一个 .dll 中。

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

于 2008-09-01T21:22:10.723 回答
1

一步步...

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

专注于寻找相当稳定的区域/库,并将它们拆分为独立的库 dll。分别构建和版本控制它们将帮助您避免集成的痛苦。

我过去一直处于这种情况,唯一的方法就是耐心地接受任务。

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

祝你好运!

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

于 2008-09-30T12:35:55.387 回答
0

@Domenic:确实,这将是一件好事......但是,整个团队已经有一段时间了,在他们成功之前,我们被困在一个单一的 .dll 和相当单一的东西上:-(

于 2008-09-01T21:27:35.327 回答