2

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

例如:

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

更新: 我想我不清楚我希望这个分组发生在哪里。当我使用我的 Customer 类时,我希望这些分组几乎像IntelliSense中的命名空间/类。我目前使用区域,但它们仅在查看代码时才有帮助,而不是在使用类时。

4

6 回答 6

3

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

如果您的文件增长到您认为需要将事物分组以重新获得控制权的大小,那么这暗示您应该尝试将类重构为几个类,每个类负责原始类所做的一个子集,以便您这样做不要以无法测试的混乱而告终,这是上帝的对象

于 2009-07-30T07:10:53.223 回答
2

我没有看到任何代码向您展示如何实现这些建议,因此我将在此处添加它。您需要根据功能将代码分解为类。然后将命名空间关键字添加到您创建的每个类中。这是更详细的 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 
于 2009-11-20T14:59:17.650 回答
1

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

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

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

#Region "Maintenance"
    ... code ...
#End Region
于 2009-07-30T07:03:16.640 回答
1

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

像这样

为 SOLID 和 Uncle Bob (Robert C. Martin) 提供一点谷歌,以获得额外的好处。

于 2009-07-30T15:55:47.040 回答
0

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

于 2009-07-30T07:05:55.917 回答
0

请记住,当您确实将类分解为更小的类时,您可以将它们放置在任意深度的命名空间系统中。Project.Customer.Data 命名空间可以容纳 GetCustomerObject 和 GetCustomerField 类。

(最重要的是,我正在尝试自学将 SOLID 应用到我的 VB.NET 工作中。这是你最终实现的那种东西吗?)

于 2009-11-20T14:44:50.777 回答