我从一个新项目开始。 我知道,将项目划分为.h和.cpp的想法很好,但在编写和测试代码时,这对我来说非常烦人。
在编写新代码时将项目拆分为.h和.cpp是一种好习惯吗?
或者在.h中编写整个类然后将其拆分为.h和.cpp(当我的项目完成或接近完成时)更好?
或者我应该只在.cpp文件中编写新类,然后创建单独的.h文件?
答案 0 :(得分:3)
您应该始终考虑将实际代码及其声明拆分为一种良好做法,而且还应作为严格的规则来应用。除非您正在编写模板,否则它们的声明和定义都将放在头文件中(即Boost
的代码,在大多数情况下,仅模板< / em>的)。但正如评论中提到的那样,即使使用模板,您仍然可以将定义和声明分开。
建议在开发过程中避免很多疼痛。不这样做可能会让你陷入困境。值得注意的是,让你的编译器在每次对头文件中的代码进行更改时重新编译一大堆内容,或者因为多次包含会最终导致你花费数小时的时间。
答案 1 :(得分:2)
除了最简单的项目或一些特殊的头文件库之外,最好将它拆分为单独的.h和.cpp文件。除了小型的私人助手课程,最好还是有一个单独的.h&amp;每个类的.cpp文件。例外情况可能是模板类和接口,它们只能是头文件。
一旦养成习惯,就不会特别烦人。事实上,它使管理项目变得更容易。
答案 2 :(得分:1)
.h文件通常用作代码的外部接口,因此尽可能少地公开它们并隐藏.cpp文件中的实现细节。有时我只在.h文件中放入一个函数,并完全隐藏.cpp中的一个类。
如果你有循环依赖或递归数据结构,如果你没有很好地拆分.h和.cpp文件,你可能会遇到问题。
如果它是通用代码(模板,contexpr,宏......),你真的只需要将所有内容都放在.h中。
答案 3 :(得分:1)
这取决于你正在解决的问题,以及你的目标。一般约定是为每个类使用一对头文件和实现文件。 (除非你正在编写模板类,它们必须完全进入头文件)。
现在,当您只是快速测试一些小的时候,将所有代码都放在一个cpp
文件中是完全合适的。但只要您的项目满足以下任何条件:
你一定要坚持这个惯例。
现在我承认它需要更多努力,这看起来令人生畏 - 但也有工具来帮助解决这个问题。例如,Visual Studio有Visual Assist,可以帮助将成员定义添加到相应的cpp
文件中,优秀的编辑器支持使用热键在标题和实现之间切换等。
还有LZZ,它允许您将所有代码保存在一个文件中,并生成h
和cpp
个文件,但我不建议除非您已经有很多从事大型项目的经验。