Андроидная венгерско-верблюжья нотация


Для разработчиков OC Android, как и для других серьёзных программистов, существует соглашение по оформлению кода.
В целом оно совпадает с соглашением в обычной Java. Как именно нужно оформлять, можно прочитать на официальной странице для Android разработчиков.

Привожу краткую справку по наименованию полей класса:

  • НЕ паблики и НЕ статики должны начинаться с “m” (анг: Non-public, non-static field names start with m).
  • Статики с “s” (Static field names start with s).
  • Все остальные – со строчной буквы (Other fields start with a lower case letter).
  • Константы – БОЛЬШИМИ_БУКВАМИ (Public static final fields (constants) are ALL_CAPS_WITH_UNDERSCORES).

Активно используется верблюжий регистр (Camel Case).

Пример с официального сайта:

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;
}

Наверное, гугл не был бы гуглом, если бы не внёс изменения в стандартные соглашения Java. Очень активно используются префиксы.
Для обычных полей “m” (возможно от англ. member), а для статических полей – “s” (static).
Это очень похоже на венгерскую нотацию.

Занятный факт, если пройтись grep-ом по исходникам Android-a, можно найти места, где эти конвенции не соблюдаются. Например статические поля имеют префикс “m”:


sources/adndroid-16

./android/app/ActivityThread.java: static ContextImpl mSystemContext = null;
./android/app/SearchManager.java: private static ISearchManager mService;
./android/bluetooth/BluetoothTetheringDataTracker.java: private static String mIface;
./android/content/res/Resources.java: /*package*/ static Resources mSystem = null;
./android/content/res/Resources.java: private static boolean mPreloaded;
./android/database/DatabaseUtils.java: private static Collator mColl = null;
и т.д.

Непонятно, почему так получилось. Обычно проверка правильности оформления исходного кода в крупных организациях автоматизирована.
Тем не менее, хотя принцип догфудинга по оформлению исходников гуглом соблюден не в полной мере, думаю, это не оправдание для других Android-программистов нарушать правила.

UPD! Нужно уточнить, правила действительны для контрибуторов AOSP. То есть тех, кто пишет исходники Андроида.

Любое использование либо копирование материалов или подборки материалов сайта, элементов дизайна и оформления допускается лишь с разрешения правообладателя и только со ссылкой на источник: programador.ru

Телеграм канал: @prgrmdr
Почта для связи: vit [at] programmisty.com