我目前有一个名为“Customers”的VB.NET类,它的规模一直在稳步增长,现在我有几十个函数。有没有办法在同一个类中维护这些功能?因为它们仍然使用通用的私有方法,但是按相似性对它们进行分组。
例如:
Class Customers
-GetData
---GetCustomerObject()
---GetCustomerFieldx()
-Lists
---GetSomeList()
---GetAnotherList()
-Maintenance
---AddCustomer()
---DeleteCustomer()
---UpdateCustomer()
更新:我想我不清楚我希望这种分组发生在哪里。当我使用Customer类时,我希望分组几乎与IntelliSense中的命名空间/类一样。我目前使用Regions但它们只在查看代码时才有用,而不是在使用类时。
答案 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>
为SOLID和Bob叔叔(罗伯特C.马丁)提供一些谷歌,以获得额外的好处。
答案 4 :(得分:0)
区域是我推荐的一种解决方案。但您也可以使用部分类。
答案 5 :(得分:0)
请记住,当你将课程分成更小的类时,你就可以将它们放在任意深度的命名空间系统中。 Project.Customer.Data命名空间可以包含GetCustomerObject和GetCustomerField类。
(尽管如此,我正在努力教自己将SOLID应用到我的VB.NET工作中。这是你最终实现的那种东西吗?)