it-swarm.com.de

Warum beginnen die meisten Felder (Klassenmitglieder) in Android Tutorial mit `m`?

Ich kenne die Regeln für Kamelfälle, aber ich bin mit dieser Regel verwechselt. Für was steht das? Ich bin ein PHP Entwickler. "Wir" verwenden Anfangsbuchstaben von Variablen als Typangabe, wie 'b' für Boolean, 'i' für Integer und so weiter.

Ist 'm' eine Java Sache? Steht es für Mobile? Gemischt?

422
pambuk

Diese Notation stammt von AOSP (Android Open Source Project) Code Style Guidelines für Mitwirkende :

Feldbenennungskonventionen befolgen

  • Nicht öffentliche, nicht statische Feldnamen beginnen mit m.
  • Statische Feldnamen beginnen mit s.
  • Andere Felder beginnen mit einem Kleinbuchstaben.
  • Öffentliche statische Endfelder (Konstanten) sind ALL_CAPS_WITH_UNDERSCORES.

Beachten Sie, dass der verknüpfte Styleguide Code enthält, der in das Android Open Source Project eingefügt werden soll.

Es ist kein Styleguide für den Code einzelner Android apps.

532
xiaobing.zhao

Viele Codierungsrichtlinien verwenden m für 'Mitglieder' einer Klasse. Wenn Sie also programmieren, können Sie den Unterschied zwischen lokalen und Elementvariablen erkennen.

82
Kolky

Was ist m Präfix?

m steht für member variable oder data member. Verwenden m Präfix für nicht öffentliche und nicht statische Felder.

Wann verwenden?

private String mCityName;
private float mTemperature;

Wann nicht verwenden?

public static int mFirstNumber;
public static final String mDATABASE_NAME;

Was mache ich?

Ich persönlich benutze es nicht. Es macht den Code komplizierter und die Lesbarkeit chaotisch. Wenn Sie immer noch Notepad zum Codieren verwenden, habe ich keine Wörter, aber moderne IDEs sind in der Lage, Element- und lokale Variablen oder alles andere hervorzuheben und einzufärben.

Fazit

Verwenden? "Ja" oder "Nein" ist Ihre persönliche Wahl.

53
Madan Sapkota

Wenn es sich um Mitgliedsvariablen in Klassen handelt, bedeutet das "m" "Mitglied". Viele Java -Programmierer tun dies, obwohl es bei modernen IDEs nicht erforderlich ist, da Sie Hervorhebungen vornehmen, mit der Maus über QuickInfos fahren usw.

31
ahans

Wenn du Probleme hast wie

ihre IDE um Setter/Getter zu generieren und Sie erhalten getmName () und setmName ()

Vergessen Sie nicht, als nächstes Folgendes zu tun ( Einstellungen/Editor/Codestil/Java/Codegenerierung ):

enter image description here

Update: Wir verwenden so etwas in Kotlin nicht (also ist es besser, dorthin zu wechseln und keine Präfixe mehr zu verwenden)

9
user924

Laut Clean Code-Buch handelt es sich nicht um einen sauberen Code.

Sie müssen den Mitgliedsvariablen kein m voranstellen. Außerdem lernen die Leute schnell, das Präfix oder Suffix zu ignorieren, um den bedeutungsvollen Teil des Namens zu sehen.

8
Hamedz

Ich finde es sehr individuell, welche Code-Konventionen verwendet werden. Ich bevorzuge es, meine Variablen mit den folgenden Präfixen zu benennen:

  • m - Methodenvariablen
  • c - Klassenvariablen
  • p - Parametervariablen

Aber ich denke, dass jeder Programmierer seinen eigenen Stil hat.

7

Um zu beweisen, dass Sie diese Konvention zum Benennen von Variablen in Ihrem Code definitiv nicht behandeln sollten, übergebe ich einen Screenshot von einem übergeordneten Android Studio .

Finden Sie, dass Variablen in einem Objekt speziell sortiert sind, um m-Variablen niedriger als Ihre nativen Variablen zu setzen . Indem Sie sie in Ihrem Code mit dem Präfix "m" benennen, verstecken Sie sie auf einem Haufen vor sich selbst .

enter image description here

4
Zon

Wie bereits erwähnt, ist es für verschiedene Variablen gestaltet. Aber es ist auch sehr nützlich für die Code-Generierung. Wenn Sie "Alt + Einfügen" drücken, erhalten Sie Windows für die gängigsten Codegenerierungseigenschaften. Wenn Sie eine "get" -Methode für Ihre Variable generieren möchten, erhalten Sie.

public class Foo{
   private int bar;

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

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

}

Aber wenn Sie "m, s" deklarieren, erhalten Sie:

public class Foo{
private int mBar;

public int getBar(){
   return mBar;
}

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

Es wird automatisch generiert und "m" oder "s" aus Ihrem Konstruktor gelöscht. Holen Sie sich, setzen Sie den Methodennamen. Danach werden "get" und "set" für das Feld ohne "m" generiert. Andoroid Fle-> Setting-> Code Style-> Java-> Code Genenretion. Und wie auf einem Bild machen. Vielleicht hilft es. Entschuldigung für meine deu. Android konfigurieren

3
IHAFURR

Es scheint eine persönliche Präferenz einiger früher Android-/Google-Ingenieure gewesen zu sein, Mitgliedsvariablen mit 'm' zu beginnen, und sie haben es daher empfohlen.

Jetzt wird diese Regel den Entwicklern in Unternehmen, die keine AOSP-Mitarbeiter sind, in den Rachen gezwungen, nur weil diese Seite als Android Codestil-Regeln betrachtet wird. Es gibt wenig oder gar keinen Nutzen in dieser Regel. Google sollte in Betracht ziehen, es zu entfernen. Andernfalls geben Sie bitte an, dass für Android Apps die Codestilregeln optional sind.

Fügen Sie dieser Petition Ihren Kommentar zur Unterstützung hinzu, um die Regel https://code.google.com/p/Android/issues/detail?id=226814 zu entfernen

2
likejudo

Der einzige Vorteil dieses Codestils ist, dass ich beim automatischen Vervollständigen eines Verweises auf eine Variable "m" eingeben kann, um nur die Mitgliedsvariablen anzuzeigen.

2
Janac Meena

Es kann auch festgestellt werden, dass es für "mir" steht, wie in der Klasse/Instanz gesagt wird: "Diese Variable gehört mir und niemand sonst kann darauf zugreifen." Im Gegensatz zu static, das möglicherweise nur für die Klasse verfügbar ist und von allen Instanzen dieser Klasse gemeinsam genutzt wird. Wenn Sie beispielsweise Kreise zeichnen, müssen Sie wissen, wie groß der Radius jedes Kreises ist

    private double mRadius;

gleichzeitig soll ein Zähler alle Kreise innerhalb der Kreisklasse verfolgen, die Sie haben könnten

    private static int sCircleCount;

und dann haben Sie nur statische Mitglieder, um die Anzahl der Kreise, die Sie derzeit haben, zu erhöhen und zu verringern.

1
jimistephen

Das Folgende sind die Namenskonventionen,

  • Nicht öffentliche, nicht statische Feldnamen beginnen mit m.
  • Statische Feldnamen beginnen mit s.
  • Andere Felder beginnen mit einem Kleinbuchstaben.
  • Öffentliche statische Endfelder (Konstanten) sind ALL_CAPS_WITH_UNDERSCORES.

Beispiel:

public class MyClass {
    public static final int SOME_CONSTANT = 42;
    public int publicField;
    private static MyClass sSingleton;
    int mPackagePrivate;
    private int mPrivate;
    protected int mProtected;
}
1
LopezDevelop

Aus Gründen der Lesbarkeit sollte die Konvention von m für Elementvariablen und s für statische Felder nicht mehr verwendet werden, wenn Sie ein modernes IDE like = verwenden Android Studio. Android Studio kann zwischen diesen unterscheiden, ohne m oder s hinzuzufügen.

1
aselims