Se stai usando getter e setter, come dovresti nominare le variabili dei membri privati?

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

  •  05-07-2019
  •  | 
  •  

Domanda

Come una sorta di follow-up per questa domanda sui prefissi , concordo con la maggior parte delle persone sul thread che i prefissi sono cattivi. Ma cosa succede se si utilizzano getter e setter? Quindi è necessario differenziare il nome getter accessibile pubblicamente dalla variabile memorizzata privatamente. Normalmente uso solo un trattino basso, ma esiste un modo migliore?

È stato utile?

Soluzione

Questa è una domanda completamente soggettiva. Non esiste un "migliore" modo.

Un modo è:

private int _x;
public get x():int { return _x; }
public set x(int val):void { _x = val; }

Un altro è:

private int x;
public get X():int { return x; }
public set X(int val):void { x = val; }

Né è la risposta giusta. Ognuno ha vantaggi e svantaggi di stile. Scegli quello che ti piace di più e applicalo in modo coerente.

Altri suggerimenti

Mi piace il prefisso dei campi con un trattino basso, come altri hanno già detto.

private int _x;

Penso che questo vada oltre la semplice preferenza personale (come ha detto David Arno in questo thread). Penso che ci siano delle vere ragioni oggettive per farlo:

  1. Significa che devi evitare di scrivere " this.x = x " per incarichi (specialmente in setter e costruttori).
  2. Distingue i tuoi campi dalle variabili / argomenti locali. È importante farlo: i campi sono più difficili da gestire rispetto alla gente del posto, poiché il loro ambito è più ampio / la durata è più lunga. L'aggiunta del carattere aggiuntivo è un po 'un segnale di avvertimento mentale per i programmatori.
  3. In alcuni IDE, il carattere di sottolineatura farà sì che il completamento automatico ordina i campi in cima all'elenco dei suggerimenti. Ciò semplifica la visualizzazione di tutti i campi per la classe in un blocco. Questo a sua volta può essere utile; nelle grandi classi, potresti non essere in grado di vedere i campi (generalmente definiti nella parte superiore della classe) nella stessa schermata del codice su cui stai lavorando. Ordinarli in cima fornisce un utile riferimento.

(Queste convenzioni sono per Java, ma esistono simili per altre lingue)

Queste cose sembrano piccole ma la loro prevalenza mi semplifica decisamente la vita quando sto programmando.

In java c'è this.foo in python c'è self.foo e altre lingue hanno cose simili, quindi non vedo la necessità di nominare qualcosa in un modo speciale, quando posso già usare un costrutto linguistico. Nello stesso contesto, gli IDE e i redattori bravi comprendono le variabili dei membri e danno loro un punto culminante speciale, quindi puoi davvero vederlo senza usare nomi speciali.

In un linguaggio maiuscolo / minuscolo uso solo:

private int myValue;

public int MyValue
{
    get { return myValue; }
}

Altrimenti userei un carattere di sottolineatura

Private _myValue As Integer

Public ReadOnly Property MyValue As Integer
    Get
        Return _myValue
    End Get
End Property

Esistono quasi tanti modi diversi di farlo quanti sono i programmatori, ma alcuni dei modi più popolari includono (per una proprietà Foo ):

  • mFoo
  • m_foo
  • _foo
  • foo

I mi piace scrivendo " this.x = x " ;. Per me è molto chiaro. Inoltre, quando si utilizza Eclipse, è possibile generare automaticamente i getter / setter in questo modo.

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