Почему большинство полей (членов класса) в руководстве по Android начинаются с `m`? - PullRequest
419 голосов
/ 19 января 2010

Я знаю о правилах использования верблюдов, но меня смущает это правило.Что это значит?Я разработчик PHP.«Мы» используем первые буквы переменных для обозначения типа, например, «b» для логического значения, «i» для целого числа и т. Д.

Является ли «m» элементом Java?Это стоит для мобильного телефона?смешанный

Ответы [ 14 ]

531 голосов
/ 16 августа 2011

Это обозначение взято из AOSP (Android Open Source Project) Рекомендации по стилю кода для авторов :

Следуйте правилам именования полей

  • Непубличные, нестатические имена полей начать с м.
  • Имена статических полей начинаются с s.
  • Другие поля начинаются со строчной буквы.
  • Открытые статические конечные поля (константы): ALL_CAPS_WITH_UNDERSCORES.

Обратите внимание, что руководство по связанному стилю предназначено для добавления кода в Android Open Source Project.

Это не руководство по стилю для кода отдельных приложений Android.

82 голосов
/ 19 января 2010

Многие строки руководства по кодированию используют m для «членов» класса.Поэтому, когда вы программируете, вы можете увидеть разницу между локальными переменными и переменными-членами.

53 голосов
/ 04 июня 2015

Что такое префикс m ?

m обозначает переменную-член или элемент данных.Используйте префикс m для непубличных и нестатических полей.

Когда использовать?

private String mCityName;
private float mTemperature;

Когда нетИспользуйте?

public static int mFirstNumber;
public static final String mDATABASE_NAME;

Что я делаю?

Лично я этим не пользуюсь.Это усложняет код и ухудшает читабельность.Если вы все еще используете Блокнот для кодирования, у меня нет слов, но современные интегрированные среды разработки способны подсвечивать и раскрашивать членские и локальные переменные или что-либо еще.?«Да» или «Нет» - ваш личный выбор.

31 голосов
/ 19 января 2010

Если это переменные-члены в классах, «m» означает «член».Многие Java-программисты делают это, хотя в современных IDE это не нужно, поскольку у вас есть подсветка, всплывающие подсказки и т. Д.

8 голосов
/ 23 марта 2018

Если у вас есть проблемы, такие как

ваша IDE для генерации сеттеров / геттеров, и вы получите getmName () и setmName ()

Не забудьте сделать следующее ( Настройки / Редактор / Стиль кода / Java / Генерация кода ):

enter image description here

Обновление: мы не используем что-то подобное в Kotlin (поэтому лучше перейти на него и больше не использовать префиксы)

8 голосов
/ 31 января 2016

Согласно книге «Чистый код», это не чистый код.

Вам не нужно ставить переменные-члены перед m . Кроме того, люди быстро учатся игнорировать префикс или суффикс, чтобы увидеть значимую часть имени.

7 голосов
/ 19 января 2010

Я думаю, это очень индивидуально, какие соглашения кода используются. Я предпочитаю называть мои переменные следующими префиксами:

  • м - переменные метода
  • c - переменные класса
  • p - Переменные параметров

Но я думаю, что у каждого программиста свой стиль.

4 голосов
/ 20 июня 2017

Чтобы доказать, что вам определенно не следует относиться к этому соглашению для именования переменных в вашем коде, я передаю скриншот из родительского Android Studio ниже.

Найдите, что переменные внутри объекта специально отсортированы, чтобы поместить m-переменных ниже, чем ваши собственные переменные .Поэтому, называя их в своем коде с префиксом «m», вы скрываете их в куче от себя .

enter image description here

3 голосов
/ 23 октября 2015

Как упоминалось ранее, он стилизован для другой переменной. Но также это очень полезно для генерации кода. Если вы нажмете «Alt + Insert», вы получите окна для наиболее распространенных свойств генерации кода. Если вы хотите сгенерировать метод «get» для вашей переменной, вы получите.

public class Foo{
   private int bar;

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

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

}

Но если вы объявите "m, s", вы получите:

public class Foo{
private int mBar;

public int getBar(){
   return mBar;
}

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

Он будет автоматически сгенерирован и "m" или "s" удалены из вашего конструктора, получите, задайте имя метода. После этого «get» и «set» для поля будут сгенерированы без «m». Andoroid Fle-> Setting-> Code Style-> Java-> Код Genenretion. И сделай как на картинке. Может быть, это поможет. Извините за мой англ. Настройка Android

2 голосов
/ 18 декабря 2017

Единственное преимущество, которое я нашел в этом стиле кода, это то, что во время автозаполнения некоторой ссылки на переменную я знаю, что могу набрать «m», чтобы увидеть только переменные-члены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...