Convenzione di capitalizzazione per campi protetti in C #


17

Quali sono le convenzioni di capitalizzazione per i nomi dei campi protetti in C #?

È _myVar (come il campo privato) o MyVar (come le proprietà)?


3
Sei sicuro di voler avere dei campi protetti? La maggior parte dei motivi per non avere campi pubblici si applicano anche a quelli protetti, quindi penso che sia meglio usare proprietà protette.
svick,

in casi di test, normalmente è conveniente avere campi protetti .. ma forse hai ragione può essere cambiato in proprietà. Ma se voglio un campo protetto, qual è la convenzione di denominazione?
Louis Rhys,

2
Sei sicuro che _myVar sia la convenzione giusta per i campi privati? (stai presupponendo che lo sia) Non stai cercando di iniziare una guerra religiosa qui, stai solo cercando di dire che se hai optato per una sorta di regola arbitraria per i campi privati, puoi scegliere un'altra regola per i tuoi campi protetti. L'unico consiglio è di essere coerenti.
Marek,

Risposte:


13

C'è qualcosa che si chiama Design Guidelines for Developing Class Libraries scritto da Microsoft.

Dice quanto segue:

Non fornire campi di istanza pubblici o protetti.

I campi pubblici e protetti non funzionano bene e non sono protetti dalle esigenze di sicurezza dell'accesso al codice. Invece di usare i campi visibili pubblicamente, usa i campi privati ​​ed esponili attraverso le proprietà.

Così come:

  • Usa l'involucro Pascal nei nomi dei campi

  • Non utilizzare un prefisso per i nomi dei campi. Ad esempio, non utilizzare g_ o s_ per distinguere i campi statici da quelli non statici.

Per quanto riguarda il _prefisso, è usato altrettanto spesso quanto la this.convenzione (per quanto ho visto sfogliare il codice sorgente in CodePlex / GitHub). ReSharper, ad esempio, promuove i _suoi controlli di denominazione.


sei stato un po 'selettivo nel non includere il "Non usare un prefisso per i nomi dei campi". da MSDN insieme alla regola del case Pascal :) Mentre è vero che il resharper di default promuove il prefisso _, se stai citando le convenzioni MSDN IMHO non dovresti mescolarle con le tue impressioni.
Marek,

2
cosa significa "non versione bene"? Stai dicendo che poiché il campo protetto non è raccomandato, non ci sono linee guida sul suo nome? Comunque, Resharper sembra raccomandareMyVar
Louis Rhys il

2
@Marek: ho incluso le mie preferenze. Ho semplicemente dichiarato cosa preferisce Resharper. E non era mia intenzione essere selettivi. Risposta aggiornata
jgauffin

1
@jgauffin A parte i consumatori che usano la riflessione sul tuo codice, non sta cambiando un campo in una proprietà trasparente per i chiamanti? In che modo la modifica di un campo protetto in una proprietà protetta con lo stesso nome interrompe la compatibilità?
Quantic,

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.