項目中的所有C++代碼是否應該封裝到一個類中,而main只需調用該類?或者主函數應該聲明變量和類。組織大型C++項目
回答
如果你要建立在C++中一個大的項目,你應該至少是讀Large Scale C++ Software Design by John Lakos它。這有點舊,但聽起來你可以從它的基本原理中受益。
請記住,在任何語言構建大型系統是一個挑戰,需要技巧和紀律,以防止它破爛不堪非常快。不要掉以輕心。這就是說,如果你的「大」的定義與我的不同,那麼我可能有其他的建議給你。我假設你正在談論一個項目,在這個項目中,包含單詞「代碼行」的句子中將會提到「million」這個詞。
即使您使用其他語言進行大型項目,您也應該閱讀Lakos。 – janm 2011-04-08 04:12:21
對於大型C++項目,您應該創建很多類!
主要應該只是踢東西了(也許做了幾個看家的東西),然後調用成一個類,將火起來的系統
沒有休息!每個頭文件/實現文件對應該代表一個類。將一個大型項目放在一個文件中是災難性的一種方式:項目變得難以維護,編譯將需要很長時間。把你的代碼分解成適當大小的塊。
主要功能不應該申報類,相反,它包含文件(通常命名爲類似的main.cpp,driver.cpp,項目名稱的.cpp)應該使用#include指令,以使編譯器讀取該聲明在頭文件中。閱讀C++的單獨編譯模型以獲取更多信息。
一些初來乍到C++找到編譯模型 - 以及錯誤代碼,當你搞砸了產生 - 難以理解或恐嚇而放棄想這是不值得的。不要讓這是你。瞭解如何正確組織您的代碼。
如果它是一類真正有意義的,肯定的 - 但至少IME,這是一個相當罕見的例外,而不是一般規則。
在這裏,我假定你並不是指所有的代碼都在一個類中,但是有一個單獨的頂級類,所以main
所做的基本上都是實例化並使用它。反過來,這個類可能會實例化並使用其他從屬類。
如果你真的意味着「應該所有的代碼包含在一個單一的類?」,那麼答案几乎肯定是一個響亮的「不」,除了真正的微不足道的項目。如果所有的代碼都在一個類中,C++中的大部分類的設計(以及大多數其他OO語言)都是毫無意義的。
是的,我認爲他的意思是說,一個叫main的頂級類是調用下級類來做實際工作的「驅動程序」。我可以從來自Java或其他更嚴格的面向對象的語言的人那裏看到這種問題,而不是C++。如果他的意思是第二段,他對「大」的定義確實是有缺陷的。儘管如此,問題並不十分清楚。 – AntonioMO 2011-04-08 04:25:23
如果你可以把你的整個項目中一類沒有發神經,你的「大」的定義可能比大多數人的不同在這裏。這很好 - 當你問人們關於「大型」C++項目的時候,請記住,他們會認爲你正在談論的事情需要多個人 - 年才能創建。
也就是說,無論項目大小如何,封裝的相同原則都適用。把你的邏輯和數據分解成有意義的單位,並且不要太捆綁在一起,然後圍繞這些部門組織你的班級。不要害怕嘗試一個組織,然後將其重構爲另一個組織,如果您發現自己複製粘貼代碼,或者如果發現一個組織過於依賴另一個組織。(或者如果你發現自己班級太多,而且你正在創造許多物品來完成一項任務,那麼單個物體會更清潔和更容易。)
玩得開心,不要害怕嘗試一點點。
如果你把所有東西都放在同一個班上,我猜你會比其他人快得多。 – 2011-04-08 11:21:28
在C++中,你應該避免把整個項目放在一個class
,不管大小。在最大你可以嘗試把它放在1或2 namespace
(它可以跨文件分割)。 具有多類的優點,
- 更好維護你的代碼的
- 把多的.h和.cpp文件類(即小模塊)幫助您快速調試
- 如果所有代碼都在一個類中,並且在某個地方進行了更改,然後必須編譯整個項目。相反,如果項目跨越模塊,則可以編譯進行更改的模塊。它節省了很多時間。
- 1. 大型Java項目組織和流程
- 2. 組織大型Django項目的指南
- 3. 組織大型項目,善變
- 4. C#單人項目組織
- 5. 組織跨平臺的C/C++項目
- 6. ASP.NET項目組織
- 7. xcode項目組織
- 8. 組織Redmine項目
- 9. MEAN項目 - 組織
- 10. 組織Gaelyk項目
- 11. 組織VBA項目
- 12. ObjectiveC項目組織
- 13. 組織JDBC項目
- 14. TFS項目組織
- 15. .NET項目組織
- 16. PHP項目組織
- 17. 組織小型項目/腳本的Python
- 18. 組織大型sproutcore項目的推薦方式是什麼?
- 19. 如何在Intellij Idea中組織一個大型的Java項目
- 20. 關於組織大型Android項目的提示?
- 21. 大型clojure項目是如何組織的?
- 22. 組織大型ASP.NET MVC2項目中文件的最佳方法?
- 23. 組織一個大型項目與多個私人椰子樹
- 24. 如何在幾個GIT倉庫中組織大型項目?
- 25. 組織數據模型目標c
- 26. 如何組織一個C++項目
- 27. C項目組織最佳實踐
- 28. 如何使用解決方案/項目/文件夾組織大型項目?
- 29. iOS項目目錄組織
- 30. 是否有一個在大型C++項目中組織include/exports的約定?
將整個'大'項目放在一個類中不是封裝。這是濫用。你當地的消防部門可能需要和你說一句話。 – corsiKa 2011-04-08 03:07:08