Perché la maggior parte dei campi (membri della classe) nel tutorial Android iniziano con `m`?


Conosco le regole del caso dei cammelli, ma sono confuso con questa regola. Cosa significa? Sono uno sviluppatore PHP. "Noi" usiamo le prime lettere di variabili come indicazione di tipo, come "b" per booleano, "i" per intero e così via.

È una cosa di Java? Sta per mobile? misto?




Answers


Questa notazione proviene da AOSP (Android Open Source Project) Linee guida sullo stile del codice per i contributori :

Seguire le convenzioni sui nomi dei campi

  • I nomi dei campi non pubblici e 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 la guida di stile collegata è per il codice da contribuire al progetto open source Android.

Non è una guida di stile per il codice delle singole app Android.




Molte linee guida di codifica usano m per 'membri' di una classe. Quindi quando stai programmando puoi vedere la differenza tra variabili locali e membri.




Qual è il prefisso m ?

m sta per variabile membro o membro dati. Utilizzare il prefisso m per campi non pubblici e non statici.

Quando usare?

private String mCityName;
private float mTemperature;

Quando non usare?

public static int mFirstNumber;
public static final String mDATABASE_NAME;

Quello che faccio?

Personalmente, non lo uso. Rende il codice più complicato e caos la leggibilità. Se usi ancora il Blocco note per la codifica non ho parole, ma gli IDE moderni sono in grado di evidenziare e colorare membri e variabili locali o qualsiasi altra cosa.

Conclusione

Uso? "Sì" o "No" è una tua scelta personale.




Se è membro delle variabili nelle classi, la 'm' significa 'membro'. Molti programmatori Java lo fanno, anche se con IDE moderni non è necessario dal momento che hai evidenziato, mouse sulle descrizioni dei comandi, ecc.




Secondo il libro Clean Code, non è un codice pulito.

Non è necessario prefisso variabili membro con m . Inoltre, le persone imparano rapidamente a ignorare il prefisso o il suffisso per vedere la parte significativa del nome.




Penso che sia molto individuale utilizzare le convenzioni del codice. Preferisco nominare le mie variabili con i seguenti prefissi:

  • m - Variabili del metodo
  • c - Variabili di classe
  • p - Parametro variabili

Ma immagino che ogni programmatore abbia il proprio stile.




Come accennato in precedenza, è disegnato per diverse variabili. Ma è anche molto utile per la generazione del codice. Se premi "Alt + Inserisci" otterrai finestre per le proprietà più comuni delle generazioni di codice. Se vuoi generare il metodo "ottieni" per la tua variabile otterrai.

public class Foo{
   private int bar;

   public int getBar(){
       return this.bar;
   }

   public void setBar(int bar){
       this.bar = bar; 
   }

}

Ma se dichiari "m, s" otterrai:

public class Foo{
private int mBar;

public int getBar(){
   return mBar;
}

public void setBar(int bar){
   mBar = bar;
}
}

Verrà generato automaticamente e "m" o "s" cancellati dal costruttore, ottieni, imposta il nome dei metodi. Dopo questo "get" e "set" per il campo verranno generati senza "m". Andoroid Fle-> Setting-> Code Style-> Java-> Code Genenretion. E fatti come in una foto. Forse aiuterà. Mi dispiace per il mio ing. Configura Android




Sembra che sia stata una preferenza personale di alcuni dei primi ingegneri Android / Google iniziare le variabili membro con "m" e così l'hanno consigliato.

Ora questa regola viene forzata a squarciagola dagli sviluppatori di aziende che non sono né contributori AOSP, semplicemente perché quella pagina è considerata come le regole di stile del codice di Android. C'è poco o nessun beneficio in quella regola. Google dovrebbe prendere in considerazione la rimozione. Altrimenti, si prega di specificare che per le app Android quali delle Code Style Rules sono opzionali.

Aggiungi il tuo commento di supporto a questa petizione per rimuovere la regola https://code.google.com/p/android/issues/detail?id=226814




Come mater di leggibilità, non dovrebbe essere più utilizzato (m per le variabili membro, s per i campi statici) se si utilizza un IDE moderno (Android Studio). Android Studio può distinguere tra quelli senza aggiungere m o s.




Si può anche affermare che sta per "mio", come in Class / Instance sta dicendo "Questa variabile è mia e nessun altro può arrivarci". Diverso da statico che, mentre potrebbe essere disponibile solo per la classe, è condiviso da tutte le istanze di quella classe. Come se tu stessi disegnando cerchi, avresti bisogno di sapere quanto è grande il raggio di ogni cerchio

    private double mRadius;

ma allo stesso tempo vuoi che un contatore tenga traccia di tutti i cerchi, all'interno della classe del cerchio che potresti avere

    private static int sCircleCount;

e poi hai solo membri statici per aumentare e diminuire il conteggio delle cerchie che hai attualmente.




Per dimostrare che non dovresti assolutamente trattare questa convenzione per le variabili di denominazione nel tuo codice, passo uno screenshot da un genitore Android Studio qui di seguito.

Trova che le variabili all'interno di un oggetto siano appositamente ordinate per mettere m-variabili inferiori alle tue variabili native . Quindi nominandoli nel tuo codice con il prefisso "m" li nascondi in un mucchio da te stesso .