Как я могу сгруппировать функции в классе ASP.NET? - PullRequest
1 голос
/ 30 июля 2009

В настоящее время у меня есть класс VB.NET с именем «Клиенты», и его размер постоянно растет, и теперь у меня есть пара десятков функций. Есть ли способ сохранить функции в одном классе? Поскольку они все еще используют общие частные методы, но группируют их по сходству.

Например:

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

ОБНОВЛЕНИЕ: Полагаю, мне неясно, где я хочу, чтобы произошла эта группировка. Я хочу, чтобы группы были почти похожи на пространства имен / классы в IntelliSense , когда я использую свой класс Customer. В настоящее время я использую регионы, но они помогают только при просмотре кода, а не при использовании класса.

Ответы [ 6 ]

3 голосов
/ 30 июля 2009

Я бы не рекомендовал регионам группировать контент в ваших файлах на общих основаниях.

Если ваш файл увеличивается до такого размера, что вы чувствуете, что вам нужно сгруппировать вещи, чтобы восстановить контроль, то это совет, вы должны попытаться реорганизовать класс в несколько классов, каждый из которых отвечает за подмножество того, что делал исходный класс, что вы не получите непроверяемый беспорядок, который является объектом Бога

2 голосов
/ 20 ноября 2009

Я не вижу кода, показывающего вам, как реализовать предложения, поэтому я добавлю его сюда. Вам нужно разбить код на классы, основанные на функции. Затем добавьте ключевое слово namespace к каждому из создаваемых вами классов. Вот статья MSDN с более подробной информацией (http://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic3). Вот код psuedo. Затем вы можете сослаться на код, используя 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 
1 голос
/ 30 июля 2009

Мне кажется, что класс «Клиенты» может делать слишком много, и его нужно разбить, чтобы придерживаться принципа единой ответственности. Идея состоит в том, что класс знает, как хорошо выполнять одну вещь, а получение данных - это другая ответственность за выполнение бизнес-логики с этими данными. В настоящее время я прохожу учебный процесс, пытаясь разбить мои монолитные классы на более мелкие, более целевые, поэтому я не могу дать хороший совет о том, как это сделать, но в Интернете есть много ресурсов, которые помогут:

нравится

Имейте немного Google для SOLID и дядюшки Боба (Роберт К. Мартин) для дополнительного совершенства.

1 голос
/ 30 июля 2009

Используйте регионы кода в ваших исходных файлах. Это дает вам кнопки развернуть / свернуть, чтобы вы могли скрыть разделы файла.

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

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

#Region "Maintenance"
    ... code ...
#End Region
0 голосов
/ 20 ноября 2009

И помните, что когда вы разбиваете класс на гораздо меньшие классы, у вас есть возможность поместить их в произвольно глубокую систему пространства имен. Пространство имен Project.Customer.Data может содержать классы GetCustomerObject и GetCustomerField.

(Как и все, я пытаюсь научить себя применять SOLID в моей работе на VB.NET. Это то, что вы в итоге реализовали?)

0 голосов
/ 30 июля 2009

Регион - это одно решение, которое я рекомендую. Но вы также можете использовать частичные классы.

...