2010-11-21 11 views
194

Guardando le esercitazioni Android come the Notepad tutorial, ho notato che quasi tutte le variabili sono denominate a partire dalla lettera "m". Che convenzione è questa e da dove proviene?Perché i nomi delle variabili iniziano spesso con la lettera "m"?

+0

http://stackoverflow.com/a/7072899/342095 – SMUsamaShah

+0

Ciao!Questo non è più usato, è una cattiva denominazione delle variabili! Si chiama Notazione ungherese. Questa vita alla perfezione nella piattaforma all'interno di AOSP ha aderito allo stile AOSP. Android Studio e IntelliJ IDEA distinguono visivamente i nomi dei campi in base all'appartenenza (istanza o statica). Gli IDE impongono l'appartenenza, la visibilità e i tipi corretti per impostazione predefinita in modo che una convenzione di denominazione non aggiunga nulla qui. Saluti! – mavesonzini

risposta

241

Questo significa membro. Personalmente ritengo questa convenzione non utile, ma è soggettiva.

+105

Ho sempre letto la 'm' come 'mia'. Buono a sapersi che non è così stupido, lol – Falmarri

+17

Non ho mai capito nemmeno questa convenzione. Perché aggiungere una "m" dispari quando puoi usare "this"? L'intero punto di quella parola chiave è indicare che hai a che fare con una variabile/funzione membro della classe. –

+47

OK, "m" è molto frainteso. Non penso sia importante se usi o meno un IDE, tutte le variabili dovrebbero seguire questa convenzione. Usando questa convenzione si può rapidamente vedere il codice immediatamente davanti a loro e comprendere prontamente l'ambito delle variabili, trovo questo estremamente importante con le attività Android. Non devo interrompere la mia catena di pensiero tracciando sempre le variabili attraverso l'IDE, è MOLTO meglio per scopi di concentrazione. – AutoM8R

14

"m" significa membro della classe. Quindi, se non utilizzi IDE per evidenziare i tuoi membri, capirai che si tratta di un membro con il suo nome

+1

questo ha più senso per me quindi il resto delle risposte –

2

'm' significa che la variabile è una variabile membro della classe ...

4

Come già risposto a questo prefisso indcates che una variabile è membro.

somtimes persone usano altri prefissi se si scopre alcune variabili che iniziano con 'i' o 's' Potrebbe anche essere una variante del Hungarian Notation

0

non solo in java, ho visto convenzione analoga a cocos2d + box2d esempi in cui alcune variabili iniziano con m_, ma altre no, molto confuse.


b2World* world; 
GLESDebugDraw *m_debugDraw; 

Immagino di differenziare le variabili box2d C++ dalle variabili Obj-C.

94

Vedere Code Style Guidelines for Contributors: Follow Field Naming Conventions. L'uso del prefisso "m" è più specifico che indica semplicemente una variabile "membro": è per "nomi di campi non pubblici e non statici".

+3

Ottimo collegamento, non solo per i prefissi. –

+0

Questo link si riferisce all'applicazione di scrittura? o semplicemente per aprire il progetto Android? – David

+1

Viene visualizzato un errore "Autorizzazioni insufficienti" quando si tenta di aprire quella pagina. Forse qualcuno può postare alcuni dei suoi contenuti? – Cosmin

0

Mi capita di incontrare di tanto in tanto questa convenzione e devo ammettere che è piuttosto inutile. L'impilatore menziona la notazione ungherese ... questa è la mia preferenza.

private string sName; 
public string Name 
{ 
    get { return sName; } 
    set { sName = value; } 
} 

In questo modo mostra il tipo e la sua differenziata dal nome del metodo.

+4

Joel Spolsky [è il caso] (http://www.joelonsoftware.com/articles/Wrong.html) che questo tipo di notazione ungherese non è solo male, non è stato nemmeno l'intento originale dell'inventore. –

28

Il m è qui per indicare una variabile ember m.

Dispone di 2 vantaggi enormi:

  • Se lo vedi, si riconosceranno immediatamente come una variabile membro.
  • Premere m per ottenere tutti i membri tramite il completamento automatico. (Questo non è nelle altre risposte)
+4

Più 1 per il suggerimento di completamento automatico! – AdamJeffers

+8

C'è già qualcosa per quello integrato in Java - si chiama così ;-) –

60

According to Android source code documentation:

, nomi
  • non pubblici dei campi non statici iniziano con m.
  • I nomi dei campi statici iniziano con s.
  • Altri campi iniziano con una lettera minuscola.
  • I campi finali statici pubblici (costanti) sono ALL_CAPS_WITH_UNDERSCORES.

Si noti che questo è per la scrittura di codice sorgente Android. Per creare app Android, lo Google Java Style Guide potrebbe essere più utile.

+2

Puoi fornire un URL per questa documentazione di Google? Grazie! –

+1

Questo è il modo più pertinente – pandalion98

+2

http://source.android.com/source/code-style.html#follow-field-naming-conventions –

Problemi correlati