3

我有一个名为EventArgs. 从中派生出许多表示特定类型事件的事件参数的专业化。这些事件的消费者可能需要一些、许多或很少的这些参数类。

我的问题是,您是否会为每种类型提供一个头文件(例如,50 多个不同的头文件),您是否会尝试将它们分组并为这些类型提供一个“通用”头文件,或者您会抛出注意窗口并将它们放入一个可以包含的易于使用的头文件中?

另一种方法可能是拥有 50 个头文件,然后我可以介绍一些包含特定头文件的“家族”头文件。不确定这些东西的命名约定,所以很明显什么在哪里。

我知道可能没有硬性规定,但想知道其他开发人员在编写许多小类时都做了什么。

提前致谢。

4

5 回答 5

3

在以下情况之一中,我必须将两个类放入单独的标题中:

  • 他们很大
  • 它们不相关或不太可能一起使用
  • 他们每个人都引入了自己的头文件依赖项

否则,将它们分开没有多大意义。我知道有些人有这个“每个标题一个类”规则,但在你的情况下它看起来不合理。

什么是“家庭”,包括大量小文件,在某些构建系统(和文件系统)中,这可能会影响编译时间,无论如何我认为这样做没有意义 - 通常人们会使用文档或 IDE查找类,而不是查看头文件名。所以你这样做只是为了简化包含,但为什么不把它们放在同一个标​​题中。

于 2011-01-05T00:49:05.040 回答
1

我会根据用户可能希望一起使用的类将它们分组。无论如何,50 多个微小的头文件似乎过多。

于 2011-01-04T23:56:37.953 回答
0

如果它们属于相同的继承层次结构,请将它们放在相同的 .h 文件中。它可以帮助您确定课程的正确顺序。c++ 中鲜为人知的编译时检查之一依赖于 .h 文件中类的正确顺序。

于 2011-01-05T17:57:00.333 回答
0

不是所有的变体都是模板吗?

于 2011-01-05T00:41:52.167 回答
0

我曾经遇到过类似的情况,我正在开发一个 GUI 库。最初所有组件(它们是小类)都共享相同的头文件和源文件。这工作得很好。后来我尝试将它们放在单独的文件中,但实际上并没有改善任何东西。它只会增加花费大量时间搜索这些文件的负担。

除此之外,也许您可​​以从 Poco C++ 库中汲取一些灵感。这个库通常遵循每个标题一个类的习惯用法,但也有例外。例如,使用基于宏的系统将整个异常层次结构编码在一个头文件和源文件上(参见Exception.hException.cpp)。

于 2011-01-05T01:13:19.307 回答