C++:在小型项目的头文件中编写整个类的缺点?

Ann*_*inn 9 c++ coding-style header

只是一个风格问题......

我是一个独立的低级独立游戏开发者,我自己开发了我所说的是在我的标题中编写整个课程的"坏"习惯.我知道.h/.cpp文件组合的一些好处是它们允许将代码拆分成编译块,只要它们保持不变,就不需要重新编译.并允许从实现中分离接口.

但是,这些都不会对我有任何好处,因为我倾向于将我的实现放在一个可以轻松改进,更改,阅读的地方.我的编译时间几乎是即时的(2-4秒,如果我将SFML或Box2D更新到他们的最新版本并且他们也需要重新编译,则为15秒)

像这样的编码一直在为我节省了相当多的时间,而且由于文件较少,我的代码对我来说感觉不那么"压倒性".

但鉴于此,并且总的来说,对于一个小项目的每个"file.h"设置,是否有任何令人信服的理由遵循"file.cpp",其中编译时间和接口/实现分离不是优先级?

Jam*_*lis 6

是否有任何令人信服的理由为一个小项目的每个"file.h"设置遵循"file.cpp",其中编译时间和接口/实现分离不是优先级?

不; 在头文件中定义类和函数没有任何问题,特别是在编译时间不受关注的小项目中.

对于它的价值,我目前正在进行的业余爱好项目有33个头文件和一个.cpp文件(不包括单元测试).这主要归功于几乎所有东西都是模板.

如果您有一个庞大的软件项目,或者您需要将代码封装到库中并且实际上需要模块化,那么将代码从头文件中分离出来可能是有意义的.如果你想隐藏一些实现细节(例如,如果你有一些丑陋的标题,你不想在项目的其他地方包括 - 例如WinAPI标题),那么将代码分成单独的源文件是有意义的隐藏这些细节.否则,可能只是为了获得很多收益而做很多工作.

  • 风格指南说,因为这是规则.这里描述的案例是一个例外.总是先教导规则,因为在某些时候教导会停止倾听.也就是说,你想要避免的是前同事使用的模式,它只使用标题作为真实代码,然后有一个.cpp将整个过程拼接起来.永远建立(80-100文件),它没有链接到我们的系统部分(链接期间大量的多重定义错误),它使`make -j`无用,每个构建都是完整的构建. (2认同)
  • @迈克:惯例存在是有原因的,我不会忘记那么多。对于大型项目,或与其他人一起进行的项目,我会做很多不同的事情,不仅仅是我的标头和文件的设置方式,哈哈。有点像我为家人做饭,以及我为自己做饭(微波炉)。 (2认同)