回答
不,這是不錯的做法,運送大量的DLL;但是,將它們放在%System32%中是不好的做法。實際上,使用DLL代替靜態鏈接通常是很好的做法;一方面,您可以輕鬆地更換需要更新的DLL,而不必更換整個二進制文件,而另一方面,如果您的程序最終需要多個可執行文件一起工作,那麼您只需支付一份DLL代碼(而使用靜態鏈接,則最終會複製常見的代碼)。
爲多個可執行文件+1。 – 2010-08-03 11:53:33
您只需支付磁盤上DLL的一個副本;在RAM中,它是按可執行文件複製的。 – Ioan 2010-08-04 17:53:48
很難確保您只有一個DLL副本,如果有其他應用程序使用例如Qt.dll,除非他們將它們放入系統中,否則您的應用程序無法找到它們。你通常可以做的最好的事情就是在你的公司 – 2010-08-04 18:05:05
擁有靜態鏈接可爲您的應用程序提供大量內存空間,因此,從該POV開始,DLL會更好,即只加載所需內容。現在,安裝通常由安裝程序完成,因此如果您有很多DLL,則無關緊要。
我認爲這不是一個壞習慣。看看Office或Adobe或任何大型應用程序。他們最終得到了很多DLL - 因爲他們不得不將所有東西都打包成一個100M + EXE文件。
當你不是絕對需要它們時,將事情分解成DLL。
我不反對你。但我不一定會把Office或Adobe視爲優秀軟件工程的例子。或者任何已經存在多年和多個版本的應用程序。有很多事情只是歷史事故,這些事故的價格變化太大,或者由於成百上千的開發人員在使用同一種產品。 – KeithB 2010-08-03 12:40:52
@KithithB:我不知道。我想任何大規模的應用程序都需要分解爲動態加載的組件 - 否則如果用戶不訪問某些功能,則會付出浪費的性能代價。 Web應用程序在單獨的腳本文件中執遊戲通過資源文件來做到這一點(遊戲主要是內容;一些遊戲將所有內容都包裝在一個大文件中,但是它們會加載它的零食,同樣的原則隱藏在優化技巧後面);等 – kizzx2 2010-08-03 13:35:43
我不同意有多個DLL。我只是說「辦公室做它,所以它一定是個好主意」並不是一個有說服力的論點。 – KeithB 2010-08-03 16:43:26
一般來說這不是一個壞習慣。最好將程序的代碼拆分爲獨立的動態庫,特別是如果所提供的功能是從多個可執行文件中使用的話。 這並不意味着每個程序都應該在更多動態庫中分割代碼;對於簡單的實用程序,這可能不需要。
正如其他人所說,很多DLL並不是一個壞習慣。把一些想法放在每一箇中。我喜歡儘可能將DLL保持爲「小島嶼式」。如果這些將分發,我喜歡有一個特定的命名約定,反映產品和/或公司名稱和/或某種類型的首字母。
只是想從其他程序添加另一個觀察使用許多動態加載的DLL。例如,GIMP及其插件。加載DLL的方式會影響客戶感知的應用程序速度,如果這是其他非常好的(更新,重用等)因素。我確信操作系統需要一些開銷來加載DLL,並且你可能會遇到進程限制(比如打開文件句柄)。擁有非常多的非常小的DLL可能不如「比那個」大的那個「更小」的DLL數量大。
- 1. 在一個文件中有多個類定義是不是很好的做法?
- 2. 通過多個.exe編寫應用程序是否是一種好的做法?
- 3. 它是一個很好的做法,同一列的多個表
- 4. 在一個表中有幾個外鍵是不是很好的做法?
- 5. 在卡桑德拉有多個密鑰空間是不是很好的做法?
- 6. 是否有一個很好的Web應用程序來操縱PDF文件?
- 7. Setter.Value不是一個ContentProperty是否有很好的理由?
- 8. 從ASP.NET MVC應用程序執行WebRequests是不是一個不好的做法?
- 9. Android全屏應用程序:一個很好的做法?
- 10. 有一個很長的初始化方法是不好的做法嗎?
- 11. 在多個CCTMXTiledMaps中共享CCTextureAtlas是否有很好的方法?
- 12. 是不是很好的做法,爲不同的目的有很多用戶控件
- 13. 在xCode項目中有多個* .xcodeproj文件是否是一種好的做法?
- 14. 是否有一個很好的DirectX(3D)DirectWrite教程?
- 15. 是否有一個很好的Windows C++ XML DOM教程?
- 16. 有很長的摩卡測試是不好的做法?
- 17. REST是我的應用程序的一個很好的解決方案嗎? - (有很多操作的系統)
- 18. 是否有一個很好的方法來定義catch塊是否運行?
- 19. 這個網址是無效的,不是很好的做法?
- 20. 帶「#」的href,這是不好的做法?
- 21. 是不是很好的做法,或者至少不是不好的做法,不要使用限制
- 22. 有多個回報是不好的做法嗎?
- 23. 有多個DoWorkEventHandlers是不好的做法嗎?
- 24. 它是一個很好的做法,使用'的Response.Redirect()``中Global.asax`
- 25. 從構造函數中調用方法是否是一種很好的做法?
- 26. 網站使用自己的API是不是很好的做法?
- 27. 在應用程序中擁有數據庫訪問權限是否是不好的做法:didFinishLaunchingWithOptions:?
- 28. IT經理/程序員是否有很好的專業協會?
- 29. 是@unlink一個不好的做法?
- 30. 是否有一個用Python構建GUI應用程序的好的IDE
有多少dll可能會發生變化,以及您裝運了多少dll? – 2010-08-02 23:49:50
不知道,如果它的好或壞的做法,還是取決於它如何影響應用程序。但我肯定會發現它看起來更清晰,只能看到一個.exe文件。 – mingos 2010-08-02 23:51:44