Dlaczego większość pól (członków klasy) w samouczku Androida zaczyna się od `m`?

Wiem o zasadach sprawy wielbłąda, ale mylę się z tą zasadą M. Co to oznacza? Jestem programistą PHP. "My" używamy pierwszych liter zmiennych jako oznaczenia typu, jak " b "Dla logiki logicznej," i " dla liczby całkowitej i tak dalej.

Czy " m " to coś z Javy? Czy to oznacza mobile? mieszane?

Author: AlikElzin-kilaka, 2010-01-19

14 answers

Ta notacja pochodzi z AOSP (Android open Source Project) Code Style Guidelines for Contributors :

Postępuj Zgodnie Z Konwencjami Nazewnictwa Pól

  • Niepubliczne, niestatyczne nazwy pól zacznij od m.
  • Nazwy pól statycznych zaczynają się od s.
  • inne pola zaczynają się od małej litery.
  • publiczne statyczne pola końcowe (stałe) to ALL_CAPS_WITH_UNDERSCORES.

Zauważ, że linked style przewodnik służy do tworzenia kodu do projektu Android Open Source.

Nie jest to przewodnik stylu dla kodu poszczególnych aplikacji na Androida.

 502
Author: xiaobing.zhao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-30 14:47:37

Wiele linii przewodnich kodowania używa m jako 'członków' klasy. Więc podczas programowania możesz zobaczyć różnicę między zmiennymi lokalnymi a zmiennymi członkowskimi.

 79
Author: Kolky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-19 15:35:00

Co to jest prefiks m ?

M oznacza zmienną member lub element danych. Użyj prefiksu m dla pól niepublicznych i niestatycznych.

Kiedy używać?

private String mCityName;
private float mTemperature;

Kiedy nie używać?

public static int mFirstNumber;
public static final String mDATABASE_NAME;

Co robię?

Osobiście go nie używam. To sprawia, że kod jest bardziej skomplikowany i chaos czytelność. Jeśli nadal używasz Notatnika do kodowania, nie mam słów, ale nowoczesne IDE są w stanie podświetlić i kolorowanie zmiennych członkowskich i lokalnych lub czegokolwiek innego.

Wniosek

Używać? "Tak" lub " nie " to twój osobisty wybór.

 49
Author: Madan Sapkota,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-06 14:13:03

Jeśli są to zmienne członkowskie w klasach, 'm' oznacza 'member'. Wielu programistów Java tak robi, chociaż w nowoczesnych IDE nie jest to potrzebne, ponieważ masz podświetlenie, najechanie myszką na podpowiedzi itp.

 28
Author: ahans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-19 08:33:01

Według Clean Code book, to nie jest czysty kod.

Nie musisz dodawać przedrostków zmiennych członkowskich przez m . Poza tym ludzie szybko uczą się ignorować przedrostek lub sufiks, aby zobaczyć znaczącą część nazwy.

 7
Author: Hamedz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-31 20:34:20

Myślę, że jest to bardzo indywidualne, które konwencje kodu są używane. Wolę nazywać moje zmienne następującymi prefiksami:

  • m - zmienne metody
  • zmienne klasy c
  • P - zmienne parametrów

Ale chyba każdy programista ma swój własny styl.

 6
Author: Steffen Jørgensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-06 14:12:54

Jeśli masz problemy jak

Twoje IDE do generowania setterów/getterów i kończysz z getmName() and setmName ()

Don ' t forget to do next (Settings / Editor/Code Style/Java / Code Generation):

Tutaj wpisz opis obrazka

 4
Author: user924,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-23 15:26:12

Jak wspomniano wcześniej, jest ona stylizowana na inną zmienną. Ale jest również bardzo przydatny do generowania kodu. Jeśli naciśniesz "Alt + Insert", otrzymasz okna dla najczęściej używanych właściwości generowania kodu. Jeśli chcesz wygenerować metodę "get" dla swojej zmiennej otrzymasz.

public class Foo{
   private int bar;

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

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

}

Ale jeśli zadeklarujesz "m, s" otrzymasz:

public class Foo{
private int mBar;

public int getBar(){
   return mBar;
}

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

Zostanie ona automatycznie wygenerowana I" m "lub" s " usunięte z twojego konstruktora, get, Ustaw nazwę metody. Po tym " get " I " set " dla pole zostanie wygenerowane bez "m". Andoroid Fle- > Setting - > Code Style -> Java - > Genenrecja Kodu. I zrobić jak na zdjęciu. Może to pomoże. Przepraszam za mój eng. Konfiguracja Androida

 3
Author: IHAFURR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-27 14:31:25

Aby udowodnić, że zdecydowanie nie powinieneś traktować tej konwencji nazywania zmiennych w kodzie, przekazuję zrzut ekranu z rodzica Android Studio poniżej.

Znajdź zmienne wewnątrz obiektu a specjalnie posortowane, aby umieścić m-zmienne niższe niż Twoje zmienne macierzyste . Więc nazywając je w swoim kodzie z prefiksem "M", ukryj je w kupie przed sobą .

Tutaj wpisz opis obrazka

 3
Author: Zon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 12:44:00

Wydaje się, że niektórzy wczesni inżynierowie z Androidem/Google preferowali uruchamianie zmiennych członkowskich z " m " i dlatego to polecili.

Teraz ta zasada jest wymuszana do gardeł programistów w firmach, które nie są ani współpracownikami AOSP, po prostu dlatego, że ta strona jest uważana za reguły stylu kodu Androida. W tej zasadzie nie ma żadnych korzyści. Google powinno rozważyć usunięcie go. W przeciwnym razie proszę określić, że dla aplikacji na Androida, który z reguł stylu kodu są opcjonalne.

Dodaj swój komentarz poparcia do tej petycji, aby usunąć regułę https://code.google.com/p/android/issues/detail?id=226814

 2
Author: likejiujitsu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-02 01:59:56

Jako mater czytelności, nie powinien być już używany (M dla zmiennych członkowskich, s dla pól statycznych), jeśli używasz nowoczesnego IDE (Android Studio). Android Studio może odróżnić je bez dodawania m lub s.

 1
Author: aselims,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-14 16:44:28

Można również stwierdzić, że oznacza "mine", ponieważ w klasie/instancji mówi " ta zmienna jest moja i nikt inny nie może się do niej dostać."Różni się od statycznej, która, choć może być dostępna tylko dla klasy, jest współdzielona przez wszystkie instancje tej klasy. Jakbyś rysował okręgi, musiałbyś wiedzieć, jak duży jest promień każdego okręgu

    private double mRadius;

Ale w tym samym czasie chcesz licznik, aby śledzić wszystkie koła, wewnątrz klasy circle można have

    private static int sCircleCount;

A potem wystarczy mieć statyczne członki, aby zwiększyć i zmniejszyć liczbę okręgów, które aktualnie masz.

 1
Author: jimistephen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-03 14:34:04

Jedyną korzyścią, jaką znalazłem w tym stylu kodu, jest to, że podczas automatycznego uzupełniania jakiegoś odniesienia do zmiennej wiem, że mogę wpisać "m", aby zobaczyć tylko zmienne członkowskie.

 1
Author: Janac Meena,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-18 16:23:21

Postępuj zgodnie z konwencjami nazewnictwa pól

Non-public, non-static field names start with m.

Static field names start with s.

Other fields start with a lower case letter.

Public static final fields (constants) are ALL_CAPS_WITH_UNDERSCORES.

Na przykład:

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;
}
 0
Author: LopezDevelop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-31 08:48:07