Вопрос

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

Например:

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

вот так

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top