與What are the advantages of using more then 1 code file for a project? (C++)相反,我想知道是否有(例如C++)項目不使用多個代碼文件(技術或其他)的優點?在代碼項目中不使用多個文件有沒有優點? (C++)
是分裂在幾個文件只是人類的東西?在可見性/優化方面,機器一次處理所有這些問題不是更好嗎?
與What are the advantages of using more then 1 code file for a project? (C++)相反,我想知道是否有(例如C++)項目不使用多個代碼文件(技術或其他)的優點?在代碼項目中不使用多個文件有沒有優點? (C++)
是分裂在幾個文件只是人類的東西?在可見性/優化方面,機器一次處理所有這些問題不是更好嗎?
那麼,如果你看看What are the advantages of using more then 1 code file for a project? (C++),你會發現拆分代碼有很多優點。否則所有這些將會丟失。
不是的唯一好處如果您正在開發一個非常小的項目,那麼將您的代碼拆分。然後將所有內容保存在一個文件中更方便。
大多數足夠大的項目都有多個文件。在開發過程中,你只是感受到他們不可抗拒(急切)的需求。誰真的喜歡滾動回來和超過1000年的線路進行一些編輯?
是的,這是一個人性化的東西。我們必須分割東西才能夠理解它們。我們需要處理更小的代碼。
這並不能幫助我。我想知道在編譯期間還是一般情況下是否有優勢。 – 2013-03-22 22:20:13
@PatrickB。如果沒有?如果這導致了編輯時間的增加和編譯時間的增加呢?如果沒有編譯器設計*來有效處理多文件代碼,會怎麼樣? – Jean 2013-03-22 22:21:59
這實際上是一個微妙的問題。當文件符合其他問題中回答的標準之一時,即當文件或項目「足夠大」以至於更易於分割時,分割文件纔是有利的。如果不符合這些標準,則沒有優勢。所以這個問題的答案是「如果分裂文件的理由都不適用,請不要分裂。」它們通常適用於中型項目。爲了給出一個具體的例子,「Hello World」通常應該保存在一個文件中。
如果你想發送該程序作爲電子郵件附件,那麼你只需要附加一個文件。
這是一個公平點。並鞏固我的判斷結束這個問題不建設性。 – djechlin 2013-03-22 22:21:22
如果你發送一個檔案,你只需要發送一個文件。此外,只需發送一條鏈接到github/bitbucket/...存儲庫! – sehe 2013-03-22 22:24:21
我總是忘記檔案,並最終附上幾十個文件。謝謝你提醒我! – StackedCrooked 2013-03-22 22:35:06
將所有內容放到單個文件中將會破壞文件級靜態和匿名命名空間的目的(並且不需要extern聲明)。
儘管編譯器並沒有太多好處。對於諸如優化之類的事情,他們只是簡單地實現需要全局可見性的部分(並且大多數當前連接器包括這樣的優化/代碼生成能力)。
它會(或至少可以)減少完整重建的總時間。使用單獨的源文件,您將結束重新編譯每個包含它的源文件的每個頭。只有一個源文件,你只需要編譯一次(但是預編譯的頭文件可以並且通常會減少這個問題,至少在你使用它的時候可能很少)。
從實際的角度來看,通常會大大影響構建時間。大多數人都很努力地將事情隔離開來,因此程序某一部分的改變只需要重新編譯一小段程序。對於任何不是真正微乎其微的程序而言,每次進行任何更改時都不得不重新編譯所有內容,這是完全難以管理的 - 對於體型適中的程序,您的編譯時間會從幾秒鐘變爲幾分鐘。
如果一切都在一個編譯單元中,編譯器可能會做更多的優化,這就是sqlite3以這種方式分佈的原因。
這是*年代*編譯器的真實情況,但幾乎所有的現代編譯器都支持鏈接時間代碼生成和其他強大的優化,這些優化大部分都歸咎於歷史好奇心的領域。 – 2013-03-23 00:07:28
多數民衆贊成在他所鏈接的問題;) – 2013-03-22 22:16:20
這是一個問題,這引發了我的問題,我想起了一段時間以來。我認爲這不僅僅是答案的反面。 – 2013-03-22 22:17:26
@pst with * machine *我的意思是任何文件處理(編譯,但也解析和其他)。 – 2013-03-22 22:22:28