Domanda

Con sempre più progetti al mio attivo, trovo che spesso ripeto molte attività comuni da un progetto all'altro, da un cliente all'altro. Quindi ho iniziato a assemblare un & Quot; utility & Quot; libreria, una raccolta di questi elementi comuni che vengono spesso ripetuti da un progetto all'altro.

Finora ho utilità per ridimensionare le immagini, esportare griglie di dati per eccellere, inviare e-mail e sostituire i messaggi tokenizzati.

Se costruissi / utilizzassi una libreria di classi di utilità .NET, quali tipi di processi considereresti utili? Quali spazi dei nomi / gruppi immagineresti?

Aggiorna

Sto parlando di una vera libreria di classi, separata in spazi dei nomi per raggruppare elementi comuni.

È stato utile?

Soluzione

  1. Non scriverei una libreria chiamata "Common" o "Utilities" o "Misc" o ... Hai capito. Invece, avrei una directory chiamata 'Lib', e sotto ogni area di funzionalità in una libreria separata. Ad esempio, potrei avere Lib / Trace, Lib / UI, Lib / Net, Lib / Web per un progetto C ++. Per C #, avrei Lib / Acme.Trace, Lib / Acme.Windows.Forms, Lib / Acme.Net, ecc. (Supponendo che il tuo spazio dei nomi / azienda di livello superiore si chiami "Acme").
  2. YAGNI. Non scrivere codice di cui potresti aver bisogno.
  3. Non gettare le cose in una libreria condivisa finché non le hai utilizzate in due o più progetti.

Altri suggerimenti

Personalmente, metterei alcune di queste funzionalità in librerie separate, come " utility " è un termine piuttosto soggettivo, ciò che una persona trova utile non è così utile per un altro.

Se all'interno della libreria fosse suddiviso in spazi dei nomi descrittivi, allora direi che è migliore (ad es. ridimensionare le immagini sarebbe in una sorta di spazio dei nomi .Drawing o in un .Drawing.dll) .

Nella mia biblioteca di classe ho molte cose che condivido tra progetti:

  • Contenitore IoC e framework di iniezione delle dipendenze
  • Un framework completo di controller / osservatori, mi permette di separare il codice UI dal codice backlogic
  • Un ragionevole insieme di classi indipendenti dal database per l'esecuzione di SQL, si occupa di alcune differenze di sintassi, principalmente nomi di funzioni
  • Molte altre classi di supporto e metodi di utilità per gestire i dati
  • Alcune classi di archiviazione interna standardizzate, come Tuple<..> ecc.
  • Alcune raccolte personalizzate, come Set<T>, Heap<T>, nonché numerosi metodi di utilità per gestire vari tipi di raccolte

La libreria di classi viene aggiunta quando ho bisogno di più cose.

Suggerirei invece di " utility " libreria crea solo librerie specifiche del dominio (grafica, autenticazione, convalida, ecc.) e le include solo dove sono necessarie. La chiave ovviamente è deciso quanto specifici essere. Più specificità è generalmente migliore.

Indipendentemente dal fatto che non abbia un dominio, probabilmente non lo capisci completamente, nel senso che dovresti rivalutare ciò che stai facendo e provare a realizzare prima.

Inoltre, ricorda che ciò che è utile in uno o due progetti potrebbe finire per essere utile solo in uno o due progetti. L'aggiunta di più classi del necessario causa solo problemi di manutenzione lungo la strada.

Anche se io stesso sono uno sviluppatore alle prime armi, ho trovato le funzioni RegEx e i filtri SQL molto utili. Ho anche la funzionalità Merge Replication per MSSQL che mi è stata molto utile finora.

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