回答
不是。它只是增加了粗体和头顶。
作为一个维护者,你将面临的最大痛苦之一是弄清楚什么标题不需要包括并摆脱它们。当你得到一个20 +头的列表,你开始contemplating ugly things像蛮力强制穿过它(一次删除一个,看看是否有任何破坏)。
善待未来维护你的东西的人。使用你需要的每个模块的标题,没有更多..不少于:)
头文件实际上是你从你的c程序中包含的东西。它包含结构,宏,函数定义等数据结构。有时单个头文件可以正常使用,如果程序增长为逻辑组件,则可能需要购买。
我个人认同“把它放在你使用它的地方”的理念。这使得它更清楚哪些文件使用什么,依赖关系等。
想象一下,您有一个标题MyHeader.h
。如果您需要更改依赖于该代码的代码,可以很容易地找到该代码,如果每个使用该代码的文件都有一个#include "MyHeader.h"
- 您可以对include语句进行全局搜索。
如果在另一方面,你只包括在一些其它头MyHugeHeader.h
MyHeader.h
,然后包括是在你的文件,你不能这样做,因为所有这在使用MyHeader.h
文件为#include "MyHugeHeader.h"
,同每隔一个文件。
个人喜好真的... 只要你是一致的(这使得它很容易阅读),它是如何格式化并不重要, 。你可以把它放在1个头文件中,或者你可以把它放在每个需要它的文件中。它还取决于其他包含的东西是如何加载的,主要不需要它的包含等等,所以使用相同的头文件来存放所有其他C文件可能或不可以(取决于编译器)包括相同的包含多个倍。
编辑:我有一个苹果同意过,把它放在你使用它是一个非常,非常好的事情做的一样好
有些事情不是已经指出:
不需要依赖增加了编译时间。修改标题时,必须重新编译直接或间接包含它的所有编译单元。如果不需要包含,则重新编译也不是。程序越大,问题就越大,尤其是如果你将程序分解为需要手动触发的重新编译的组件。
当您添加不需要的依赖项时,预编译器标头可能更有效。
我不会故意把我所有的包括成一个头文件,仅仅是因为如果你改变这些包含的头文件中的一个,你必须重新编译已列入你的“主”包括一切文件。这可能会导致单行更改的编译时间过长。
这就是说,我不会花太多时间来确保我不会对include语句过于自由。一些工程师会花费大量时间试图减少内容以节省编译时间,我认为他们的时间更适合解决问题或开发新功能。
将所有可能的标题放在一个应用程序标题中的错误可能是错误的。
这是懒惰,以很高的价格来。它使构建变得脆弱。这使得很难理解真正的依赖关系在哪里,因此很难重构或以其他方式重用代码。
这使它很难测试。
但最大的问题是,它代表了知识分子的懒惰,并鼓励更多相同的东西。
如同所有的编程问题一样,做所需要的,不要多做,不要少做。考虑维护。考虑构建管理。
只是想。
- 1. 将srand()放在头文件中是个好主意吗?
- 2. Flex:包含MXML另一个MXML文件是一个好主意或设计吗?
- 3. 在预编译头文件中包含resource.h是个好主意吗?
- 4. 重新创建Win32头文件是一个好主意吗?
- 5. 在Javascript中是一个异步类是一个好主意吗?
- 6. 将所有文件包含在一个.h文件中,并将该文件包含到AVR的各个地方是一种很好的做法吗?
- 7. 在输出对象中包含附加信息是一个好主意吗?
- 8. 聚合ViewModels是一个好主意吗?
- 9. django:是@csrf_exempt一个好主意吗?
- 10. Java/JSTL:把所有的URL放在一个枚举中是一个好主意吗?
- 11. 在布尔上有一个索引是个好主意吗?
- 12. 有一个服务只是为了注册意图是一个好主意吗?
- 13. 将.Net用于商业软件是一个好主意吗?
- 14. MSMQ是一个好主意
- 15. 使用REST webservice上传文件是一个好主意吗?
- 16. 清除旧的Rails迁移文件是一个好主意吗?
- 17. 在一个方法中调用viewdidload是个好主意吗?
- 18. 将整个代码写入ViewController是一个好主意吗?
- 19. 在每个viewmodel有一个serviceclient实例是一个好主意吗?
- 20. 在另一个头文件中包含头文件
- 21. 将翻译置于JSON中是一个好主意吗?
- 22. 我应该包含另一个头文件中包含的文件吗?
- 23. 将所有的脚本调用放在一个包含文件中
- 24. 将我所有的.js分组到一个文件中 - 好主意?
- 25. 在每个源文件中包含一个头文件
- 26. 在MySQL的一个字段中使用多个FK是一个好主意吗?
- 27. 有一个Object []数组是不是一个好主意?
- 28. 在Mongo数据库中存储图像文件,这是一个好主意吗?
- 29. 在WP中写入$ = jQuery是一个更好的主意吗?
- 30. 在动作助手中使用browserhostory.push是一个好主意吗?
...当然,这种暴力破解更加复杂的原因是您必须在每个支持的操作系统上测试“是否有任何事情中断”,可能会在多种不同的构建时配置下进行测试。 – caf 2011-02-28 05:39:17