回答
不是。它只是增加了粗體和頭頂。
作爲一個維護者,你將面臨的最大痛苦之一是弄清楚什麼標題不需要包括並擺脫它們。當你得到一個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