2009-07-30 3 views
1

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

Например:

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

UPDATE: Я предполагаю, что не было ясно, где я хотел эту группировку, чтобы произойти. Я хочу, чтобы группы были почти как пространства имен/классы в IntelliSense, когда я использую свой класс Customer. В настоящее время я использую регионы, но они помогают только при просмотре кода, а не при использовании класса.

ответ

3

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

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

1

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

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

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

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

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

1

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

like this

есть немного Google для SOLID и дяди Боба (Robert C. Martin) для дополнительной добавленной благости.

0

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

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

2

Я не вижу код, показывающий вам, как реализовать предложения, поэтому я добавлю его здесь. Вам нужно разбить код на классы на основе функции. Затем добавьте ключевое слово 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 
Смежные вопросы