2010-07-06 72 views
3

在哪一點,你決定你的一些子程序和公共代碼應該放在類庫或DLL中?在我的一個應用程序中,我想分享一些不同項目之間的通用代碼(衆所周知,這是一個programming sin to duplicate code)。如何確定何時實現DLL?

我的絕大多數代碼都在一個項目中。我還有一個小的實用程序,它與主要可執行文件進行了分區,並以提升的權限運行,以實現唯一目的。這兩個項目至多有三個共同的子程序。這些常用子程序是否應該從類庫中放置和調用?你如何決定什麼時候這樣做?當你至少有一個共享子程序?二十多行代碼?

我不認爲這應該是語言特定或框架依賴,但如果是這樣,我使用.NET框架。

回答

1

有更多的方式來應用程序之間共享代碼比一個DLL。從聽起來像,你不是在談論很多代碼,所以它聽起來像你不必擔心太多。

一般情況下,我用拇指以下規則:

  • 對於瑣碎的重複代碼(幾個簡單的1-2線的功能,這是很容易理解和調試)我只是複製和粘貼代碼。

  • 對於更復雜的功能(包含在一個或兩個文件中的獨立幫助程序函數的小型庫,需要適度的維護和調試),我將在兩個項目中簡單地包含該文件鏈接或定義子庫,或類似的東西)。

  • 對於更廣泛的代碼共享(一組相互關聯的類或數據庫通信層,這對多個項目很有用),我會將它們重構爲獨立庫,並使用適合的方式打包並分發它們無論我在編程。

因爲由一個數量級管理你的代碼增加每一步(當你包裝你現在需要思考的版本問題,多個項目的DLL)的複雜性,你只需要在需要時移動到下一個級別。聽起來你感覺不到處理你的通用代碼的痛苦,如果是這種情況,那就沒有真正的需要。

0

如果代碼在多個應用程序之間共享,則它必須駐留在DLL或類庫中。

對於更大的應用程序,您可能還希望將應用程序的不同子系統分爲不同的庫。這樣每個項目都可以專注於一項特定的任務。這簡化了您的應用程序的結構,並且更容易找到任何一段代碼。例如,你可能有不同的DLL(.NET項目)的GUI應用程序:

  • 與特定網絡協議
  • 工作訪問通用的代碼,比如工具類
  • 訪問遺留代碼(通過PInvoke的)
  • 等...