475 Stimmen

Warum beginnen die meisten Felder (Klassenmember) im Android-Tutorial mit "m"?

Ich kenne die Regeln für CamelCase, aber ich bin verwirrt von dieser m-Regel. Wofür steht sie? Ich bin ein PHP-Entwickler. "Wir" verwenden die ersten Buchstaben von Variablen als Hinweis auf den Typ, z. B. 'b' für boolean, 'i' für integer und so weiter.

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

2 Stimmen

Mitglied, natürlich, macht absolut Sinn :D Danke!

296 Stimmen

Dieses Präfix macht nichts anderes als die Lesbarkeit durcheinander zu bringen ...

11 Stimmen

Die Angabe des Typs als Präfix ist schlecht und wird als ungarische Notation bezeichnet. Siehe thc.org/root/phun/unmaintain.html und kernel.org/doc/Documentation/CodingStyle

576voto

xiaobing.zhao Punkte 5846

Diese Notation stammt aus AOSP (Android Open Source Project) Richtlinien zum Code-Stil für Mitwirkende:

Folgen Sie den 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 finale Felder (Konstanten) sind IN_GROSSBUCHSTABEN_MIT_UNTERSTRICHE.

Beachten Sie, dass der verlinkte Style-Guide für den Code gedacht ist, der zum Android Open Source Project beigetragen werden soll.

Es handelt sich nicht um einen Style-Guide für den Code einzelner Android-Apps.

37 Stimmen

Interessant.. der Google Java Code Style widerspricht tatsächlich dem AOSP Code Style in Bezug darauf.

56 Stimmen

Ich denke, in diesen Zeiten macht es keinen Sinn, besonders in Ihrer App! "Ihre Klassen und Funktionen sollten klein genug sein, dass Sie sie nicht brauchen. Und Sie sollten eine Bearbeitungsumgebung verwenden, die Mitglieder hervorhebt oder einfärbt, um sie deutlich zu machen. Außerdem lernen die Menschen schnell, das Präfix (oder Suffix) zu ignorieren, um den bedeutungsvollen Teil des Namens zu sehen. Je mehr wir den Code lesen, desto weniger sehen wir die Präfixe. Letztendlich werden die Präfixe zu unsichtbarem Ballast und zu einem Zeichen älteren Codes." - Robert Martin in Clean Code

5 Stimmen

Widersprüchlich zu Googles Java Style Guide - "Nichtkonstante Feldnamen (statisch oder anderweitig) werden in lowerCamelCase geschrieben. ... Zum Beispiel computedValues..."

86voto

Kolky Punkte 2877

Viele Codierungsrichtlinien verwenden 'm' für 'Members' einer Klasse. Wenn Sie also programmieren, können Sie den Unterschied zwischen lokalen und Member-Variablen sehen.

97 Stimmen

Alle modernen IDEs unterscheiden zwischen Lokalen und Mitgliedern durch Farbe/Schriftart, was meiner Meinung nach viel lesbarer ist als das m Präfix.

0 Stimmen

Fügen Sie bitte Ihren Kommentar zu dieser Petition hinzu, um die Regel code.google.com/p/android/issues/detail?id=226814 zu entfernen.

6 Stimmen

@DzmitryLazerka In den meisten Code-Überprüfungstools haben Sie nicht dieses Maß an Hervorhebung. Daher ergibt es Sinn in einem großen Open-Source-Projekt.

64voto

Madan Sapkota Punkte 23065

Was ist das m Präfix?

m steht für Member-Variable oder Datenelement. Verwenden Sie das 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 ich mache?

Persönlich verwende ich es nicht. Es macht den Code komplizierter und verwirrt die Lesbarkeit. Wenn Sie immer noch Notepad zum Codieren verwenden, habe ich keine Worte, aber modernen IDEs sind in der Lage, Member- und lokale Variablen oder andere Elemente hervorzuheben und zu kolorieren.

Schlussfolgerung

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

1 Stimmen

Sie können es auch für public static int verwenden, aber verwenden Sie s anstelle von m: public static int sFirstNumber;, siehe stackoverflow.com/a/49453184/7767664

33voto

ahans Punkte 1657

Wenn es sich um Member-Variablen in Klassen handelt, steht 'm' für 'Member'. Viele Java-Programmierer machen das, obwohl es mit modernen IDEs nicht mehr notwendig ist, da Sie Highlighting, Mouseover-Tooltipps usw. haben.

9 Stimmen

Ich würde argumentieren, dass es auch mit einer modernen IDE schön ist, Mitglieder mit m oder m_ zu versehen, um alle Member-Variablen einer Klasse an einem Ort aufzurufen. Dies bedeutet, dass Sie, wenn Sie in einer Klasse arbeiten, einfach m_ + Strg + Leertaste drücken können, um eine Liste aller Mitglieder zu erhalten.

0 Stimmen

Agreed, I usually also prefix members with 'm' in Java. I added that last sentence to show that this is nichts, worauf sich alle Java-Programmierer einigen. Zum Beispiel sieht Sun's Codierungsstil den 'm'-Präfix nicht vor.

39 Stimmen

Nailer, du könntest dasselbe erreichen, indem du dies benutzt. + Strg-Leerzeichen :)

11voto

user924 Punkte 5215

Wenn Sie Probleme haben, wie

Ihr IDE zur Generierung von Settern/Gettern und Sie enden mit getmName() und setmName()

Vergessen Sie nicht, als nächstes zu tun (Einstellungen/Editor/Code Style/Java/Code Generation):

Bildbeschreibung hier eingeben

Aktualisierung: Wir verwenden so etwas in Kotlin nicht (es ist also besser, darauf umzusteigen und keine Präfixe mehr zu verwenden)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X