visual studio 2012 - c++最佳实践-我应该何时将我的项目分成.h和.cpp文件

visual studio 2012 - Best practice in C++ - when should I divide my project into .h and .cpp files?

本文关键字:项目 我的 文件 cpp 何时 c++ 2012 studio 最佳 我应该 visual      更新时间:2023-10-16

我从一个新项目开始。我知道,把一个项目分成。h和。cpp的想法很好,但是在编写和测试代码时,这对我来说很烦人。

在编写新代码时,将我的项目分成。h和。cpp是一个好的做法吗?

或者是更好地编写整个类在。h,然后分割成。h和。cpp(当我的项目完成或接近完成)?

或者我应该在。cpp文件中编写新的类,然后创建单独的。h文件?

您应该始终考虑分割实际代码及其声明,这不仅是一种良好的实践,而且也是一种严格的规则。除非您正在编写模板,在这种情况下,它们的声明和定义都将放在头文件中(即Boost的代码,其中大部分都是模板)。但是正如在注释中提到的那样,即使在使用模板时,您仍然可以将定义声明分开。

建议这样做以避免开发过程中的许多痛苦。不这样做可能会给你带来麻烦。值得注意的是,每次对头文件中的代码进行更改时,或者因为多个包含而使编译器重新编译一大堆东西,这最终会导致您花费数小时的时间。

除了最琐碎的项目,或者一些特殊的头文件库之外,最好将其拆分为单独的.h和.cpp文件。除了小型的私人帮佣班,最好有一个单独的。h &每个类的.cpp文件。例外可能是模板、类和接口,它们只能是头文件。

一旦你养成了习惯,它就不是特别烦人了。事实上,它使管理项目更容易。

.h文件通常用作代码的外部接口,因此在它们中尽可能少地暴露,并在.cpp文件中隐藏实现细节。有时我只把一个函数放在。h文件中,而把一个类完全隐藏在。cpp文件中。

如果你有循环依赖关系或递归数据结构,如果你不拆分你的。h和。cpp文件,你可能会遇到问题。

如果是泛型代码(模板,contexpr,宏…)

这取决于你正在处理的问题和你的目标。一般约定是为每个类使用一对头文件和实现文件。(除非您正在编写模板类,它们必须完全放入头文件中)。

现在,当你只是快速测试一些小的东西时,把所有的代码放在一个cpp文件中是完全合适的。但只要您的项目满足以下任何条件:

  • 项目不仅仅是一个算法/实验
  • 其他开发人员会继续开发
  • 项目将存活(即它将被开发、使用和维护)一段时间

你一定要遵守约定。

现在我承认,这需要更多的努力,这可能看起来令人生畏-但也有工具来帮助这一点。例如,有Visual Studio的Visual Assist,它可以帮助添加成员定义到相应的cpp文件,好的编辑器支持用热键在头文件和实现文件之间切换,等等。

还有LZZ,它允许您将所有代码保存在单个文件中,并从中生成hcpp文件,尽管我不建议这样做,除非您已经有很多在大型项目上工作的经验。