Domanda

Come organizzi i tuoi metodi di estensione?Supponiamo che se avessi estensioni per la classe oggetto e la classe stringa, sarei tentato di separare questi metodi di estensione in classi IE:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

lo sto rendendo troppo complicato o ha senso?

È stato utile?

Soluzione

Organizzo i metodi di estensione utilizzando una combinazione di spazio dei nomi e nome della classe ed è simile al modo in cui descrivi nella domanda.

Generalmente nella mia soluzione è presente una sorta di "assemblaggio primario" che fornisce la maggior parte delle funzionalità condivise (come i metodi di estensione).Chiameremo questa assemblea "Quadro" per motivi di discussione.

All'interno dell'assembly del Framework, cerco di imitare gli spazi dei nomi delle cose per le quali dispongo di metodi di estensione.Ad esempio, se estendo System.Web.HttpApplication, avrei uno spazio dei nomi "Framework.Web".Classi come "String" e "Object", che si trovano nello spazio dei nomi "System", si traducono nello spazio dei nomi "Framework" radice in quell'assembly.

Infine, la denominazione segue le linee che hai specificato nella domanda: il nome del tipo con "Estensioni" come suffisso.Ciò produce una gerarchia di classi come questa:

  • Framework (spazio dei nomi)
    • Framework.ObjectExtensions (classe)
    • Framework.StringExtensions (classe)
    • Framework.Web (spazio dei nomi)
      • Framework.Web.HttpApplicationExtensions (classe)

Il vantaggio è che, dal punto di vista della manutenzione, è davvero facile in seguito trovare i metodi di estensione per un determinato tipo.

Altri suggerimenti

Esistono due modi in cui organizzo i metodi di estensione che utilizzo,

1) Se l'estensione è specifica per il progetto su cui sto lavorando, la mantengo nello stesso progetto/assembly, ma nel proprio spazio dei nomi.

2) Se l'estensione è di un tipo tale da poterla utilizzare o da poterla utilizzare anche in altri progetti, le separo in un assieme comune per le estensioni.

La cosa più importante da tenere a mente è: in quale ambito li utilizzerò?Organizzarli non è difficile se tengo a mente solo questo.

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