Domanda

Al momento ho una classe VB.NET denominata " Clienti " ed è cresciuto costantemente di dimensioni e ora ho un paio di dozzine di funzioni. Esiste un modo per mantenere le funzioni nella stessa classe? Dal momento che usano ancora metodi privati ??comuni, ma li raggruppano per somiglianza.

Ad esempio:

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

AGGIORNAMENTO: immagino di non essere stato chiaro su dove avrei voluto che si verificasse questo raggruppamento. Voglio che i raggruppamenti siano quasi come spazi dei nomi / classi in IntelliSense quando utilizzo la mia classe Customer. Attualmente uso le regioni ma mi aiutano solo quando vedo il codice, non quando uso la classe.

È stato utile?

Soluzione

Non consiglierei le regioni di raggruppare il contenuto nei tuoi file su base generale.

Se il tuo file cresce a una dimensione tale che ritieni di dover raggruppare le cose per riprendere il controllo, questo è un suggerimento che dovresti provare a ricattare la classe in più classi ciascuna responsabile di un sottoinsieme di ciò che ha fatto la classe originale, quindi che non si finisce con il caos non verificabile che è oggetto di Dio

Altri suggerimenti

Non vedo alcun codice che ti mostri come implementare i suggerimenti, quindi lo aggiungerò qui. È necessario suddividere il codice in classi in base alla funzione. Quindi aggiungi la parola chiave dello spazio dei nomi a ciascuna delle classi che crei. Ecco l'articolo MSDN con maggiori dettagli ( http://msdn.microsoft .com / it-it / library / ms973231.aspx # assenamesp_topic3 ??). Ecco il codice psuedo. Quindi faresti riferimento al codice 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 

Usa le aree di codice nei tuoi file sorgente. Questo ti dà pulsanti di espansione / compressione in modo da poter nascondere sezioni del file.

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

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

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

Mi sembra che la classe Clienti stia facendo troppo e che debba essere suddivisa per aderire al Principio di Responsabilità Unica. L'idea è che una classe sappia fare bene una cosa e ottenere dati è una diversa responsabilità nell'eseguire la logica aziendale con tali dati. Attualmente sto attraversando il processo di apprendimento del tentativo di suddividere le mie lezioni monolitiche in classi più piccole e più mirate, quindi non posso dare ottimi consigli su come farlo, ma ci sono molte risorse sul web per aiutare:

come questo

Avere un po 'di google per SOLID e lo zio Bob (Robert C. Martin) per ulteriore bontà aggiunta.

La regione è una soluzione che raccomando. Ma puoi anche usare classi parziali.

E ricorda, quando dividi la classe in classi molto più piccole, hai la possibilità di inserirle in un sistema di spazio dei nomi arbitrariamente profondo. Lo spazio dei nomi Project.Customer.Data potrebbe contenere le classi GetCustomerObject e GetCustomerField.

(Tanto più che altro, sto cercando di insegnarmi ad applicare SOLID al mio lavoro su VB.NET. È questo il tipo di cose che hai finito per implementare?)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top