繁体   English   中英

C ++最佳实践-什么时候应该将项目分为.h和.cpp文件?

[英]Best practice in C++ - when should I divide my project into .h and .cpp files?

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

在编写新代码时将项目分为.h和.cpp是一种好习惯吗?

还是用.h编写整个类,然后将其拆分为.h和.cpp(当我的项目完成或接近完成时)会更好吗?

还是应该在.cpp文件中只编写新类,然后创建单个.h文件?

您应该始终考虑拆分实际的代码及其声明,这不仅是一种好习惯,而且还应作为适用的严格规则。 除非您正在编写模板,否则在这种情况下,它们的声明和定义都将放在头文件中(即Boost的代码,在大多数情况下, 仅模板 )。 但是正如评论中提到的那样,即使使用模板,您仍然可以将definitionclarification分开。

建议避免在开发过程中产生很多痛苦。 不这样做可能会给您带来麻烦。 值得注意的是,每次对头文件中的代码进行更改时,或者由于多个包含项最终导致您花费大量时间,让编译器重新编译一堆东西。

在除最琐碎的项目以外的所有项目中,或者在仅某些特殊头文件的库中,将其拆分为单独的.h和.cpp文件是一个好习惯。 除了小型私人帮助程序类外,每个类都有一个单独的.h&.cpp文件是一种好习惯。 例外可能是模板类和接口,它们只能是头文件。

一旦养成习惯,它就不会特别令人讨厌。 实际上,这使项目管理更加容易。

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

如果您具有循环依赖关系或递归数据结构,那么如果未很好地拆分.h和.cpp文件,则可能会遇到问题。

如果真的是通用代码(模板,contexpr,宏...),则实际上只需要将所有内容都放在.h中。

这取决于您要解决的问题以及您的目标。 通常的约定是为每个类使用一对头文件和实现文件。 (除非您要编写模板类,而模板类必须完全放入头文件中)。

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

  • 该项目不仅仅是一个简单的算法/实验
  • 其他开发人员将为此工作
  • 该项目将持续一段时间(即将被开发,使用和维护)

您绝对应该遵守惯例。

现在,我承认这需要付出更多的努力,这似乎令人生畏-但也有一些工具可以帮助您解决这一问题。 例如,有用于Visual Studio的Visual Assist ,可以帮助将成员定义添加到相应的cpp文件中,好的编辑器支持使用热键在标头和实现之间进行切换,等等。

还有LZZ ,它允许您将所有代码保存在一个文件中,并从中生成hcpp文件,尽管除非您已经有处理大型项目的丰富经验,否则我不建议您这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM