Pergunta

Actualmente tenho uma classe VB.NET chamado "Clientes" e tem vindo a crescer em tamanho e agora tenho uma dúzia de funções nele. Existe uma maneira de manter as funções na mesma classe? Uma vez que eles ainda usam métodos privados comuns, mas agrupá-los por semelhança.

Por exemplo:

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

UPDATE: Eu acho que eu não estava claro de onde eu queria que este agrupamento de ocorrer. Quero que os agrupamentos a ser quase como namespaces / classes em IntelliSense quando eu usar minha classe Cliente. Eu uso atualmente Regiões mas eles só ajuda quando ver o código, não quando usando a classe.

Foi útil?

Solução

Eu não recomendo regiões para o conteúdo do grupo em seus arquivos em uma base geral.

Se o arquivo cresce ao tamanho tal que você sente que você precisa para agrupar as coisas para recuperar o controle, em seguida, que é uma dica que você deve tentar refazer a classe em várias classes cada um responsável por um subconjunto do que a classe original fez, então que você não acabar com a bagunça não testável que é o objeto Deus

Outras dicas

Eu não vejo qualquer código mostrando como implementar as sugestões, por isso vou adicioná-lo aqui. Você precisa quebrar o código em classes com base na função. Em seguida, adicione o namespace palavra-chave para cada uma das classes que você faz. Aqui está o artigo MSDN com mais detalhes ( http://msdn.microsoft .com / en-us / library / ms973231.aspx # assenamesp_topic3 ??). Aqui está o código pseudo. Então você teria que fazer referência ao código usando 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 

Use regiões de código em seus arquivos de origem. Isto dá-lhe expandir / botões de recolhimento para que possa esconder seções do arquivo.

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

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

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

Parece-me que os clientes de classe pode estar fazendo muito e precisa ser discriminados ao aderir à responsabilidade única Princípio. A idéia é que uma classe sabe como fazer uma coisa bem e obtenção de dados é uma responsabilidade diferente para executar lógica de negócios com os referidos dados. Estou actualmente a atravessar o processo de aprendizagem de tentar quebrar minhas aulas monolíticas em partes menores, mais direcionados, então não posso dar grandes conselhos sobre como fazer isso, mas existem muitos recursos na web para ajudar:

assim

Tenha um pouco de google para SOLID e tio Bob (Robert C. Martin) para a bondade extra adicionado.

Região é uma solução que eu recomendo. Mas você também pode usar as classes parciais.

E lembre-se, quando você faz quebrar a turma em muito classes menores, você tem a capacidade de colocá-los em um sistema de namespace arbitrariamente de profundidade. O namespace Project.Customer.Data poderia abrigar as classes GetCustomerObject e GetCustomerField.

(Por mais que qualquer coisa, eu estou tentando me ensinar a aplicar SOLID ao meu trabalho VB.NET. É este o tipo de coisa que você acabou de aplicação?)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top