在哪种情况下需要重新编译代码?
我是一名感兴趣的外行,没有任何专业编码经验,试图提高我的理解力。我正在使用的文章和书籍反复处理某些编码习惯或设计选择的应用增加了重新编译程序的可能性的情况。作者显然对此表示担忧,但不幸的是,他们从未明确解释潜在的问题。*
对于任何软件专业人士来说,这个问题看起来显得很愚蠢,但我的私人编码工作都没有必要重新编译真正的问题。我怀疑这需要一定的背景来构成一个现实世界的问题,我恳请任何有经验的软件工程师为无知的人提供启示。
谢谢。
*例如Scott Meyer的Effective C ++:关于内联的第30项
答案 0 :(得分:1)
单一主题历史课程:
在某些语言中,程序员(具有某些经验)可以了解到,只是将字段附加到现有消息对现有代码没有影响。任何不使用任何新字段的代码都不需要重新编译。对于C ++,情况并非如此。
同一个团队也可能会将这些消息捕获到一条“消息”中。文件,因为更改一条消息对其他消息没有影响,添加新消息只会影响使用它的代码。再说一次,C ++并非如此。
在C ++中,在N个消息的文件中更改单个消息的任何方面(字段名称,大小,字段类型,命名等),将触发重新编译包含文件的所有.cc文件消息。
在我贡献的一个大型C ++项目(我们网站上有100多个贡献者)上,一个清晨的完整版本可能在大约一个小时内完成。这个版本分布在许多处理器上(但由团队共享)。到中午,完整构建持续时间通常超过3小时。
环境说明:1到3小时的构建时间几乎和共享有限的实验室设备(即访问,等待转弯的注册等)一样痛苦,可以调试更改。
在哪种情况下需要重新编译代码a 问题
edit-compile-test-debug循环持续时间主导程序员的工作效率。当该循环持续时间大/慢时,这是一个问题。
对于大型C ++项目,我们学会了在一天结束时合并(其他提交),然后启动构建并希望它在早上完成(通常没有)。
白天(上午晚些时候到月末,您只构建一些小的更改,调试工作,并推迟将代码合并到其他贡献者代码中。这种努力继续增长。
白天(清晨之后)您无法合并并完成系统重建以调试您的贡献。
这就是问题......提供工作代码是贡献者应该做的事情。
进行比较:
在我的家用桌面上,我可以在几分钟内切换窗口并完全重建我最大的项目。我的大部分应用周期持续时间都是< 1分钟。