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

例如:

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

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

有帮助吗?

解决方案

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

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

其他提示

我没有看到任何代码向您展示如何实施建议,因此我将在此处添加。您需要根据函数将代码分解为类。然后将namespace关键字添加到您创建的每个类中。这是MSDN文章的更多细节( http://msdn.microsoft .COM / EN-US /库/ 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 

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

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

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

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

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

喜欢这个

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top