自动化C++头文件/源文件分离的工具

6
我发现在开发C++类时,每当我要更新代码时,必须在两个地方更新非常烦人。在开发过程中,每次我更改方法的声明、添加const或移除&引用等操作,都会发生100多次(至少对于每个私有方法而言)。每次只为了做一点小修改就不得不打开第二个文件(头文件),这真的很让我讨厌。我曾经因为想避免这种痛苦而试图避免在开发过程中进行私有接口的更改。(你可能认为我很懒。是的,但这也是一种真正的痛苦,它阻止了我的高效工作。)
通常,我的所有声明都在头文件中,而所有定义都在源文件中。我不关心内联或聪明的优化技巧。我喜欢C++的许多方面,但如果重构和开发接口与Java一样简单,我将更加喜欢它。
有没有解决这种情况的提示呢?

3
我最近开始厌恶某些Stack Overflow 的回答,因为无论你输入什么问题,如果它不是一个显然的傻瓜问题,每个有经验的程序员都可以自己找出答案,而是一个更普遍但仍然明确定义的问题,就会在不到5分钟的时间内被要求关闭。 - Hinton
1
@Hinton 如果你能准确描述这个“新”的问题,我猜你可以自己生成这样的统计数据:http://data.stackexchange.com/stackoverflow/query/new - Spook
4
我真的讨厌每次做一点改动时都必须打开第二个文件(头文件)。你不应该频繁进行小更改,而应该花费大量时间设计类的接口,并冻结它。很少需要更改它,可能只是添加引用类型或“在这里添加一个const”。这是您设计和开发过程中的失败,而不是语言的问题。 - Lightness Races in Orbit
2
当我在没有太多先前设计的小型C++项目上工作时,我倾向于将声明和定义都放在同一个cpp文件中,然后在准备好时拆分头文件。否则,是的,你应该先设计接口。还要记住,这不是Java,所以你不必把每个函数都放在类中。你可以将帮助程序设置为“静态”,并将它们保留在定义(cpp)部分中。 - Stefano Sanfilippo
2
@LightnessRacesinOrbit:“你应该花费大量时间为你的类设计一个接口,然后冻结这个接口。” 这取决于你项目的阶段(例如,Hinton上面所说的)。BDUF是一件通常不起作用的事情。通常在进行许多小更改之后才会冻结你的接口。 - BartoszKP
显示剩余17条评论
1个回答

1
你可以查看LZZ,它可以从单个.lzz文件生成头文件和源文件。使用它的缺点是它并不总是与IDE兼容。例如,在我的情况下,使用Visual Studio + Visual Assist - 你可以设置语法高亮,调试也正常工作,并且在lzz源代码中遍历(但你不能在生成的.h/.cpp文件中遍历或设置断点),但当你查找声明时,通常会在.h文件而不是.lzz文件中找到。我个人更喜欢不使用lzz,并使用IDE进行重构和快速跳转到声明和定义之间,但有些人不想等待c++14模块并使用lzz。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接