Convenzione di denominazione della classe C #: Classe di base o Classe di base o Classe astratta

StackOverflow https://stackoverflow.com/questions/826821

Domanda

Qual è l'approccio raccomandato per nominare le classi di base? Prefigge il nome del tipo con " Base " o " Abstract " o lo aggiungeremmo semplicemente con " Base " ;?

Considera quanto segue:

tipo: ViewModel ad es. MainViewModel , ReportViewModel

classe base: BaseViewModel o ViewModelBase o AbstractViewModel

Considera anche:

tipo: Prodotto ad es. VirtualProduct , ExpiringProduct

classe base: BaseProduct o ProductBase o AbstractProduct

Quale pensi sia più standard?

class Entity : EntityBase
{
}

o

class Entity : BaseEntity
{
}
È stato utile?

Soluzione

Ci sono esempi nel Framework con il suffisso Base, ad es. System.Configuration.Provider.ProviderBase , System.Web.SessionState.SessionStateStoreProviderBase .

Ma non tutte le classi di base astratte nel Framework seguono questa convenzione (ad esempio System.Data.Common.DbParameter , System.Data.Common.DbCommand ).

Personalmente eviterei di usare il suffisso a meno che non volessi sottolineare il fatto che si tratta di una classe astratta e ho pensato che altrimenti gli utenti della classe potrebbero aspettarsi che il nome indichi un'implementazione concreta.

Altri suggerimenti

Nessuna delle precedenti. Considera lo scopo della tua classe base; chiamalo così. Ad esempio, la classe base di Automobile e Bicicletta potrebbe essere Veicolo.

Se stai creando classi base solo per avere una classe base di una classe e senza alcuno scopo o motivo diverso da quello, probabilmente stai facendo qualcosa di sbagliato.

Se stai parlando di classi di base virtuali, lo standard di Microsoft è ClassnameBase (come CollectionBase.)

Penso che sia una questione di scelta. Direi che se stai creando molte classi di base, allora forse è meglio andare con BaseClassname sempre perché in questo modo puoi SEMPRE scoprire quali classi di base puoi iniziare a usare semplicemente digitando Base e ottenendo il resto dell'aiuto da Intellisense. E se avessi 20 classi Base e aggiungessi Base come suffisso e dimenticassi qual era il nome della classe Base? Vuoi creare prima un diagramma di classe da VS e scoprire quali classi di base sono disponibili? Va bene nominarli ClassBase quando sono solo una o due classi.

Lo stesso vale per la decisione tra GetItems e la funzione ItemsGet. Direi per amor di leggibilità almeno: scegli GetItems. Segui le convenzioni :)

Usiamo BaseEntity, ma penso che sia la tua preferenza. Vedo spesso l'altro.

Sii coerente nel tuo contesto, sia nel tuo progetto, nello spazio dei nomi o, se possibile, nel tuo team. Convenzioni diverse sono peggiori di una cattiva convenzione IMHO.

Personalmente, consiglierei di non aggiungere affatto la parola base. Non sai mai quando dovrai cambiare il codice e non sarà più l'oggetto base. Detto questo, lo abbiamo già fatto in passato, abbiamo anteposto la parola Base sul davanti. Sembra scorrere meglio.

BaseEntity assomiglia molto al caso del cammello - strName, bseEntity. Vorrei EntityBase poiché definisce prima l'oggetto, che ti aiuterà a identificare la sua funzione più rapidamente.

Pensa sempre all'alfabetizzazione quando dai un nome alle cose. Non mi piace davvero guardare un server SQL e ogni procedura memorizzata si chiama usp [qualcosa]. Sulla stessa linea, non abusare di Get e Set come nomi iniziali per una funzione. Invece di GetItems o PlaceOrder, pensa a nominarli come ItemsGet o OrderPlace.

Quindi, in generale, ClassnameBase / EntityBase sarebbe una scelta migliore.

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