2009-07-30 18 views
1

我目前有一個名爲「Customers」的VB.NET類,它的尺寸一直在穩步增長,我現在有幾個函數。有沒有一種方法可以維護同一班級的功能?由於它們仍然使用常用的私有方法,但是將它們按照相似性分組。如何在ASP.NET類中分組函數?

例如:

Class Customers 
-GetData 
---GetCustomerObject() 
---GetCustomerFieldx() 
-Lists 
---GetSomeList() 
---GetAnotherList() 
-Maintenance 
---AddCustomer() 
---DeleteCustomer() 
---UpdateCustomer() 

更新:我想我是不是在哪裏,我想這組發生明顯的。當我使用我的Customer類時,我希望這些分組幾乎像IntelliSense中的命名空間/類。我目前使用Regions,但它們只在看到代碼時有所幫助,而不是在使用該類時。

回答

3

我不會推薦區域將您的文件中的內容在一般基礎上分組。

如果您的文件增長到這樣的大小,您覺得您需要對事件進行分組以重新獲得控制權,那麼這是一個暗示,您應該嘗試將該類重構爲幾個類,每個類都負責原始類的子集,這樣你就不會因爲不可測試的混亂而導致

1

在源文件中使用代碼區域。這使您可以展開/摺疊按鈕,以便隱藏文件的各個部分。

#Region "GetData" 
    ... code ... 
#End Region 

#Region "Lists" 
    ... code ... 
#End Region 

#Region "Maintenance" 
    ... code ... 
#End Region 
0

地區是我推薦的一種解決方案。但是你也可以使用部分類。

1

在我看來,Customers類可能做得太多了,需要細分以遵守單一責任原則。這個想法是,一個班級知道如何做好一件事,獲取數據是履行業務邏輯與上述數據不同的責任。我目前正在經歷學習過程,試圖將我的整體課程分解爲更小,更有針對性的課程,所以我不能給出有關如何做到這一點的好建議,但網絡上有很多資源可以幫助您:

like this

有一點固體和鮑勃叔叔(羅伯特·馬丁),以另外增加一個善良的谷歌。

0

並且記住,當你把班級分成更小的班級時,你可以將它們放置在一個任意深的命名空間系統中。 Project.Customer.Data命名空間可以容納GetCustomerObject和GetCustomerField類。

(多達什麼,我試圖教我申請SOLID我VB.NET的工作。這是你最終實現樣的事情?)

2

我沒有看到任何代碼向你展示如何實現這些建議,所以我將在這裏添加它。你需要根據函數將代碼分解成類。然後將namespace關鍵字添加到您製作的每個類中。這裏是MSDN文章更詳細的內容(http://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic3)。這是僞代碼。然後通過使用projectname.namespace.classname.method來引用代碼。

namespace Customers 
-Class GetData 
---GetCustomerObject() 
---GetCustomerFieldx() 
end namespace 

namespace Customers 
-Class Lists 
---GetSomeList() 
---GetAnotherList() 
end namespace 

namespace Customers 
-Class Maintenance 
---AddCustomer() 
---DeleteCustomer() 
---UpdateCustomer() 
end namespace 
相關問題