2008-11-23 50 views
1

好了,我一直在試圖把大家我的類別中的一個部分的根文件夾,或者:分類分類。 。

UI
BusinessLogic
數據訪問
的BusinessObjects
接口

我有更多的幾個地方我似乎無法很好地挖掘,所以我在尋找建議

  1. A Cache類,維護一個私人字典,並允許基於一些特定的鍵不同的訪問對象

  2. 事件Arg類?

此外,在一個項目下,我現在開始擁有所有3個(數據訪問,業務對象,busiensslogic)的子系統。我應該如何分解文件夾結構?

A.

projectX創建
--Subsystem1
----的BusinessObjects
----數據訪問
----的BusinessObjects
--Subsystem2
----的BusinessObjects
---- DataAccess
---- BusinessObjects

projectX創建
--BusienssLogic
---- Subsystem1BL
---- Subsystem2BL
--DataAccess
---- Subsystem1DA
---- Subsystem2DA
--BusinessObjects
---- Subsystem1BO
---- Subsystem2BO

projectX創建
--BusinessLogic
--DataAccess
--BusinessObjects
(沒有子目錄每個功能子系統)

回答

2

我嘗試將我的程序集名稱與它們的名稱空間對齊,並使用.NET Framework本身作爲指導。我堅信,使用驅動文件夾結構的命名空間結構可以創建更加可維護的代碼庫。

例如,我有一個緩存提供程序,它是我們使用的全局開發人員框架的一部分。它生活在類似的東西命名空間:

[公司] .Core.Data.Caching

我還有其他的數據相關的功能也屬於邏輯上的數據功能的下面,所以緩存有兄弟姐妹一樣適配器,轉換器和發生器。所以,讓我們假設有下面的命名空間:

[公司] .Core.Data.Adapters
[公司] .Core.Data.Converters
[公司] .Core.Data.Caching
[公司] .Core.Data.Generators

這些相關的命名空間位於名爲[Company] .Core.Data的程序集中,該程序集也是項目名稱。遵循這種結構,在解決方案中查找事物變得非常簡單。說到結構,現在我們回到它們如何存儲在磁盤上。

項目名稱是根文件夾名稱。這假設我的源代碼管理文件夾在我的本地機器上是「C:\ Source Control」:

C:\ Source Control \ Core [Company] .Core.Data \
C:\ Source Control \ Core [公司]。核心。數據\適配器
C:\源控制\核心[公司] .Core.Data \緩存
C:\源控制\核心[公司] .Core.Data \轉換器
C:\源控制\核心[公司] .Core.Data \發電機

所以,作爲一個層次,它看起來是這樣的:

[解決方法]
- [公司] .Core.Data
---- [適配器]
------(適配器文件)
---- [緩存]
------(緩存文件)
---- [轉換器]
------(轉換文件)

我把所有的項目在同一級別,並且使用文件夾改變子命名空間。這樣名稱空間和物理結構很容易調和。困難的部分是找到平衡。您不希望擁有大量較小的程序集,因此我通常會將它們分組到較高級別,並且在趨勢變得過大時或者如果子名稱空間比其他部分更頻繁地更改時最終重構它們。

我一直這樣做已經很多年了,不僅對我自己而且對我的開發人員來說都是非常舒適的。

至於你的EventArgs問題,我同意我通常對每個文件做一個類的共識,但如果它是單數用法,則會將異常放置到另一個類的EventArgs類。對於多用途,我將它們放在程序集中最高的邏輯點上,允許命名空間結構綁定我的範圍。

0

我通常喜歡粘到1類,1分文件的規則,但是當它涉及到EventArgs,我實際上喜歡在我定義委託或事件的同一個文件中聲明它們。除非這些參數被不止一個類層次使用,而這往往不會發生在我身上。

至於緩存,我會把它放在它支持的類的文件夾中。

儘管我喜歡良好的組織,但是人們可能會對此產生太多的肛門問題。

0

沒有一個正確的方法來做到這一點。

下載幾個使用類似技術的項目,並從他們的想法。

對不起,我錯過了C#標記。好的.NET項目的例子已經在herehere之前被覆蓋。

+0

你有沒有任何你覺得是理想的組織明智的例子。 。 – leora 2008-11-23 17:46:41

+0

查看編輯的評論,問候 – Ben 2008-11-23 18:36:09

0

這主要是個人的品味。

我同意布賴恩Genisio said就在哪裏把EventArg類等:如果你只用一次,把它們在你使用它們相同的文件。對於一般的類/文件,我總是有一個'通用'文件夾(多麼方便!;-))

關於文件夾結構:我會去第二個,那個是3層,並保持子系統分離。雙贏!

0

我只想添加名稱評論。 我覺得商業這個詞會導致誤用。我們這樣做了,現在我們不知道它是什麼:域邏輯或服務層。 我會建議像 域名。 Domain.Impl(從Impl分離接口) 然後服務...也許持久性,如果您使用ORM ...如果您使用不同的方法,它可能會有所不同,但說實話,我很困惑名稱BusinessLogic ,DataAccess和BusinessObjects。 我不明白什麼是。 BusinessObjects應該包含業務邏輯,邏輯?或者他們只是DTO?那麼他們爲什麼要從DataAccess的一個單獨的項目?