Dove mettere metodi comuni condivisi


9

Ho un sacco di metodi che sono comunemente usati ovunque. In questo momento il file di codice è chiamato globals, per rappresentare il fatto che sono ... in effetti ... globali.

Tuttavia, questo non mi piace.

Voglio raggrupparli in una classe e passare un'interfaccia. Farò solo un'istanza, ma non cado nella trappola del singleton qui.

Prima di tutto, come dovrei nominare la classe. Voglio evitare il nome globale perché temo che i manutentori possano avere un'idea sbagliata.

Inoltre, come dovrei considerare di suddividere un insieme di metodi in modo tale che il comportamento possa cambiare e adattarsi?

L'insieme di metodi contiene elementi come:

  • Tabelle di conversione
  • Interazione con gli appunti
  • Gestione dei caratteri creati
  • Metodi di disegno comuni
  • Fornire un'interfaccia con accesso a risorse utilizzate spesso

Sono metodi puri come Util che non salvano lo stato o salvano lo stato?
TheLQ

+1 per non cadere nella trappola del singleton.
Caleb,

@TheLQ Non necessariamente salveranno lo stato, ma terranno i dati const (come i grafici di conversione) per comodità.
Lee Louviere,

Risposte:


4

Lo spazio dei nomi potrebbe essere [application].Common.Shared

Le classi potrebbero essere nominate:

ConversionLookup
ClipboardCommunication
FontManager
DrawingUtility

Vorrei interrompere le lezioni perché sembra che facciano cose diverse.


1

Se hai intenzione di fare un'istanza, hai praticamente un singleton. Inoltre, la cosa a cui normalmente si riferirebbero le persone se parlano di una trappola per singleton è che i singleton sono globali e che la maggior parte delle classi è meglio non essere globali. Quindi potresti anche avere un singleton. Se puoi ragionevolmente passare un'interfaccia intorno ad oggetti che potrebbero voler chiamarla, non è davvero globale.

Inoltre, mettere tutto in un unico sistema di metodi globali rende difficile far cambiare e adattare il comportamento poiché non solo ogni modifica a un metodo richiede una nuova sottoclasse, ma ogni combinazione di modifiche avrebbe bisogno della propria sottoclasse.

Consiglierei di avere singleton per ognuno che è veramente globale (prenderò la tua parola che sono tutti) e un qualche tipo di registro o fabbrica che ti dia un'istanza (il che significa che puoi implementare come singleton o no, poiché l'interfaccia lo farà non fare promesse). Vorrei nominarli in base a ciò che fanno dal punto di vista del chiamante.


1

Di solito inserisco questi tipi di cose nei loro nomi di assembly qualcosa come "foo.Common" sotto uno spazio dei nomi come "foo.Common.Collections" o "foo.common.UI" ecc., Quindi posso fare riferimento all'assemblaggio in qualsiasi progetto Ne ho bisogno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.