In primo luogo, so che questa domanda è stato chiesto diverse volte prima e che, alla fine, è in gran parte una questione di preferenze personali, ma leggendo tutti i thread sull'argomento, alcune cose non sono chiare a me.Convenzione di denominazione delle campi privati
In sostanza, qualcosa che la maggior parte delle persone sono d'accordo con almeno è che gli pubblica dovrebbe essere PascalCased mentre i membri privati dovrebbero essere lowerCamelCased.
La materia che di solito porta il dibattito è se non prefisso membri privati da un trattino, o qualsiasi altra cosa. Anteponendo viola diverse regole StyleCop (che può ovviamente essere spento però)
Il razionale di non anteponendo è che si dovrebbe utilizzare questo. prefisso invece.
Il problema che ho è che non capisco come si sta facendo la differenza? Voglio dire, non è che non puoi usare questo su un membro pubblico comunque all'interno di una classe.
Immaginiamo una classe Customer, cercando in questo modo:
class Customer
{
private int age;
public int Age
{
get { return this.age; }
set { this.age = value; }
}
}
(Ovviamente, in un caso come semplice, ho potuto utilizzare un autoproperty, ma questo è solo un esempio).
Se ho aggiunto una seconda proprietà all'interno di questa classe, nulla impedirebbe mi riferisco ad esso utilizzando this.Age (la proprietà pubblica) piuttosto che this.age (settore privato). A volte, potrebbe anche essere lavabile, se qualche validazione o formattazione è stata applicata a livello getter.
Inoltre, se alcune altre proprietà della mia classe dovessero modificare l'età del cliente, avrebbe senso utilizzare la proprietà piuttosto che il campo di supporto direttamente poiché il setter potrebbe anche implementare alcune convalide di regole aziendali, giusto?
In altre parole, non vedo davvero come questa parola chiave eviti la confusione tra membri di backing privati e proprietà pubbliche in quanto può essere utilizzata su entrambi e IntelliSense mostra entrambi?
Grazie.
E 'sicuramente non viene da Java. In C/C++ gli identificatori che iniziano con underscore sono solitamente riservati per il compilatore. –