如何在ASP.NET类中对函数进行分组?

时间:2009-07-30 07:01:41

标签: vb.net class namespaces organization

我目前有一个名为“Customers”的VB.NET类,它的规模一直在稳步增长,现在我有几十个函数。有没有办法在同一个类中维护这些功能?因为它们仍然使用通用的私有方法,但是按相似性对它们进行分组。

例如:

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

更新:我想我不清楚我希望这种分组发生在哪里。当我使用Customer类时,我希望分组几乎与IntelliSense中的命名空间/类一样。我目前使用Regions但它们只在查看代码时才有用,而不是在使用类时。

6 个答案:

答案 0 :(得分:3)

我不建议区域在一般情况下对文件中的内容进行分组。

如果你的文件增长到你觉得你需要分组以重新获得控制的大小,那么这是一个暗示你应该尝试将类重构为几个类,每个类负责原始类所做的一部分,所以你不会得到God object

这样的不稳定的混乱

答案 1 :(得分: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 

答案 2 :(得分:1)

在源文件中使用代码区域。这为您提供了展开/折叠按钮,以便您可以隐藏文件的各个部分。

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

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

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

答案 3 :(得分:1)

在我看来,客户课程可能做得太多,需要细分以遵守单一责任原则。我们的想法是,一个类知道如何做好一件事,获取数据与使用所述数据执行业务逻辑是不同的责任。我目前正在经历学习过程,试图将我的整体课程分解为更小,更具针对性的课程,因此我无法就如何做到这一点给出很好的建议,但网上有很多资源可以提供帮助: / p>

like this

为SOLID和Bob叔叔(罗伯特C.马丁)提供一些谷歌,以获得额外的好处。

答案 4 :(得分:0)

区域是我推荐的一种解决方案。但您也可以使用部分类。

答案 5 :(得分:0)

请记住,当你将课程分成更小的类时,你就可以将它们放在任意深度的命名空间系统中。 Project.Customer.Data命名空间可以包含GetCustomerObject和GetCustomerField类。

(尽管如此,我正在努力教自己将SOLID应用到我的VB.NET工作中。这是你最终实现的那种东西吗?)