Warum beginnen die meisten Felder (Klassenmitglieder) im 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 erste Buchstaben von Variablen als Angabe des Typs, wie "b" für boolesche Werte, "i" für ganze Zahlen und so weiter.

Ist 'm' eine Java-Sache? Steht es für mobil? gemischt?




Answers


Diese Notation stammt aus AOSP (Android Open Source Projekt) Code Style Richtlinien für Mitwirkende :

Befolgen Sie die Namenskonventionen für Felder

  • 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 es sich bei dem verknüpften Styleguide um Code handelt, der zum Android Open Source-Projekt beigetragen werden soll.

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




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




Was ist ein Präfix?

m steht für Mitgliedsvariable oder Datenmitglied. Verwenden Sie das Präfix m für nicht öffentliche und nicht statische Felder.

Wann verwenden?

private String mCityName;
private float mTemperature;

Wann nicht?

public static int mFirstNumber;
public static final String mDATABASE_NAME;

Was ich mache?

Persönlich verwende ich es nicht. Es macht den Code komplizierter und verwirrt die Lesbarkeit. Wenn Sie noch Notepad zum Codieren verwenden, habe ich keine Worte, aber moderne IDEs sind in der Lage, Member und lokale Variablen oder irgendetwas anderes hervorzuheben und einzufärben.

Fazit

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




Wenn es sich um Membervariablen in Klassen handelt, bedeutet das 'm' 'member'. Viele Java-Programmierer machen das, obwohl sie bei modernen IDEs nicht benötigt werden, da Sie Hervorhebungen haben, mit der Maus über Tooltips fahren usw.




Laut Clean Code Buch ist es kein sauberer Code.

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




Ich denke, es ist 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.




Wie bereits erwähnt, ist es für verschiedene Variable gestylt. Aber es ist auch sehr nützlich für die Codegenerierung. Wenn Sie "Alt + Einfügen" drücken, erhalten Sie Fenster für die meisten gängigen Codegenerierungseigenschaften. Wenn Sie eine "Get" -Methode für Ihre Variable generieren möchten, erhalten Sie diese.

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 dem Konstruktor entfernt, get, set method name. Danach werden "get" und "set" für das Feld ohne "m" erzeugt. Andoroid Fle-> Einstellung-> Code Style-> Java-> Code Genenretion. Und mach wie auf einem Bild. Vielleicht wird es helfen. Entschuldigung für mein engl. Konfigurieren Android




Es scheint eine persönliche Präferenz einiger früherer Android / Google-Ingenieure gewesen zu sein, Member-Variablen mit 'm' zu starten, und so empfahlen sie es.

Jetzt wird diese Regel von Entwicklern in Unternehmen, die keine AOSP-Mitarbeiter sind, in den Kot getrieben, einfach weil diese Seite als Android Code Style-Regeln gilt. Es gibt wenig oder gar keinen Vorteil in dieser Regel. Google sollte es entfernen. Ansonsten geben Sie bitte für Android Apps an, welche der Code-Style-Regeln optional sind.

Bitte fügen Sie Ihrer Petition einen Support-Kommentar hinzu, um die Regel https://code.google.com/p/android/issues/detail?id=226814 zu entfernen.




Aus Gründen der Lesbarkeit sollte nicht mehr verwendet werden (m für Mitgliedsvariablen, s für statische Felder), wenn Sie eine moderne IDE (Android Studio) verwenden. Android Studio kann zwischen solchen unterscheiden, ohne m oder s hinzuzufügen.




Es kann auch gesagt werden, dass es für "meins" steht, wie in der Klasse / Instanz sagt: "Diese Variable gehört mir und niemand kann sie erreichen." Anders als statisch, obwohl es nur für die Klasse verfügbar ist, wird es von allen Instanzen dieser Klasse geteilt. Wenn Sie Kreise zeichnen, müssen Sie wissen, wie groß der Radius jedes Kreises ist.

    private double mRadius;

aber gleichzeitig möchten Sie einen Zähler, um alle Kreise zu verfolgen, innerhalb der Kreisklasse, die Sie haben könnten

    private static int sCircleCount;

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




Um zu beweisen, dass Sie diese Konvention nicht für die Benennung von Variablen in Ihrem Code verwenden sollten, übergebe ich einen Screenshot von einem übergeordneten Android Studio .

Finden Sie heraus, dass Variablen innerhalb eines Objekts speziell sortiert sind, um m-Variablen tiefer als Ihre nativen Variablen zu setzen . Wenn Sie sie also in Ihrem Code mit dem Präfix "m" benennen, verbergen Sie sie in einem Heap vor sich selbst .