2011-03-28 49 views
4

我目前有一個項目,它的大小日益增加。它是我提供的api的容器。安排/組織我的類/接口到文件夾?不改變名稱空間與文件夾(Resharper:命名空間提供程序= false)

我目前在根中有我的所有類和所有接口。

我已經將我的枚舉,Contants等分隔到自己的文件夾中,但是我沒有繼承該文件夾作爲命名空間的一部分,它們只是容器以保持它們整潔。

我想知道是否有人在這裏有任何經驗?

我應該我的界面分成自己的文件夾太(不繼承文件夾命名空間的一部分)

我應該我的類也分開?

我也有類是其他類的子類..即類實現它作爲一個屬性。因此它永遠不會在外面實例化。因此,我應該進一步分開它們,並將(例如)一個名爲「Products」的文件夾放在這個文件夾中,我將有我的Product類,然後是我的Item類和其他專門針對Product的類?

此外,使用該文件夾作爲分隔的方式,而不是作爲命名空間的一部分繼承文件夾名稱。

我很想聽聽一些反饋。

謝謝

回答

2

這種情況在開發中很少出現。實際上,在大多數情況下,您最終會擁有單獨的項目,而不是擁有大量文件夾的單個項目。我個人認爲一個複雜的項目是一種明顯的代碼味道。如果沒有其他的東西,你的項目編譯不會很快,因爲它被編譯爲一個塊,而單獨的項目可以並行編譯(或多或少 - 都受到依賴關係的影響)。

也就是說,如果你真的想要把一切都在一個項目中,這是我對此採取:

  • 如果某樣東西是共同的項目的所有元素(例如,有用的擴展方法),我做一個名爲Infrastructure的文件夾,確保它不是一個名稱空間提供程序,並將所有常用的東西放在那裏。
  • 我嘗試根據行爲而不是類型來分離項目的其餘部分。例如,你建議把枚舉和類分開,但這對我來說似乎是錯誤的 - 如果我有數據庫實體是類或枚舉,我寧願有一個名爲Entities(因此命名空間爲MyProject.Entities)的文件夾,它包含兩個枚舉和類在一個單一的位置。 (另請注意,如果你突然這個遷移到了一個名爲MyProject.Entities你不會有改變你的命名空間。)

綜上所述 - 按功能,儘量分組文件不會被類型。

+0

嗨德米特里,感謝您的答覆。當然,我會像微軟一樣分離出一些東西,例如System = main類,System.Globalization =全球化類......但是即使這樣做,每個項目都會包含相當數量的類,所以我認爲需要一些組織。 – Martin 2011-03-29 05:57:57

相關問題