【问题标题】:Tool to automate C++ header/source separation自动化 C++ 标头/源代码分离的工具
【发布时间】:2014-01-24 12:10:53
【问题描述】:

每当我开发 C++ 类时,我都必须在两个地方更新代码,这让我觉得非常累。在开发过程中,我更改了方法的声明、在此处或此处添加 const、删除 & 引用等发生了 100 多次(至少对于每个私有方法)。我真的很讨厌每次做一些小改动时都必须打开第二个文件(头文件),而且我看到自己试图避免在开发过程中进行私有接口更改,只是因为我想避免这种情况痛。 (你可能认为我很懒惰。我很懒惰,但这也是一种真正的痛苦,它阻止了我尽可能高效地工作。)

通常,我的所有声明都在标题中,所有定义都在源代码中。我不关心内联或聪明的小优化技巧。我喜欢 C++ 的许多方面,但如果重构和开发接口像 Java 一样简单,我会更喜欢它。

有处理这种情况的提示吗?

【问题讨论】:

  • 我也开始讨厌一些堆栈溢出,因为无论你输入什么问题,如果它不是一个愚蠢的问题,每个有经验的程序员都可以自己找到答案,但是取而代之的是一个更笼统的问题,仍然有明确的定义,将在
  • @Hinton 如果您能够准确描述“新”问题,我想您可以自己生成这样的统计数据:data.stackexchange.com/stackoverflow/query/new
  • I literally hate it that I have to open a second file (the header file) every time I do a little change 你不应该做很多小改动。您应该花费大量时间为您的类设计一个接口,然后冻结该接口。很少需要更改它,添加引用类型或“在这里和那里添加const”。这是您的设计和开发过程中的失败,而不是语言。
  • 当我在没有太多事先设计的情况下处理小型 C++ 项目时,我倾向于将声明和定义都保存在同一个 cpp 文件中,然后在准备好时拆分一个标题。否则,是的,您应该先设计界面。另请记住,这不是 Java,因此您不必将每个函数都放在类中。您可以创建助手static 并将它们保留在定义(cpp)部分中。
  • @LightnessRacesinOrbit “你应该花很多时间为你的类设计一个接口,然后冻结那个接口。”这取决于您项目的阶段(例如 Hinton 上面所说的)。 BDUF 是一个通常不会很好用的东西。您通常会在进行大量小改动后冻结界面。

标签: c++ interface header


【解决方案1】:

您可以查看LZZ,它从单个 .lzz 文件生成头文件和源文件。使用它的缺点是它并不总是能很好地与 IDE 配合使用。例如,在我使用 Visual Studio + Visual Assist 的情况下 - 您可以设置语法突出显示,调试也可以正常工作并在 lzz 源代码中运行(但您无法在生成的 .h/.cpp 文件中运行或设置断点),但是当您在寻找声明时经常会在 .h 文件而不是 .lzz 中找到它。我个人更喜欢没有 lzz 并使用 IDE 进行重构以及声明和定义之间的快速跳转,但有些人不想等待 c++14 模块并使用 lzz。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 2011-05-07
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多