Страницы

Поиск по вопросам

четверг, 28 ноября 2019 г.

Что значит “m” в начале имени переменной?

#java #android #code_style


Часто встречаю в коде переменные, название которых начинается с одной буквы, которую
я не всегда могу связать с контекстом. Например:

mCtx
mDBHelper
mDB
mTabHost


Прочитав соглашение информации что значит буква m в этих переменных не нашел.
    


Ответы

Ответ 1



В Java-based разработке использование префиксов m и s при именовании переменных рекомендовано Google для андроид-разработчиков: Префикс m (member) используется для именований непубличных нестатических полей классов (напр. mField). Префикс s (static) используется для именований статических полей классов (напр. sField). Константы именуются полностью прописными буквами с разделением нижней чертой (напр. FIELD_CONST). Прочие поля классов и локальные переменные именуются без префиксов с маленькой буквы. Сделано это для того, чтобы визуально отделять поля класса от локальных переменных, что в свою очередь идет от того, что именование переменных одного значения в андроид-разработке принято писать одинаково. То есть: public class SomeClass { Field mField; public SomeClass (Field field) { mField = field; } } Правильно это, удобно ли и прочие отвлеченные одобрения либо осуждения оставим в стороне - таковы рекомендации разработчикам под платформу Android. Кроме того, весь фреймворк Android написан по этим соглашениям и часто заглядывая в исходники как то привыкаешь к такому стилю, иной кажется уже ошибочным, а читать код не придерживающийся такого стиля становится некомфортно (все это применительно исключительно к коду андроид-приложения). Лично у меня в IDE настроено автоматическиое выставление нужных префиксов где это требуется. Ну и конвенция Java не дает подобных рекомендаций - предлагается именовать все переменные и поля классов с маленькой буквы и без каких-либо префиксов, поэтому если вы не андроид-разработчик вы не должны именовать поля префиксами. UPDATE И вот опубликована конвенция Google Java Style, где внезапно сказано буквально следующее: В стиле Google особые префиксы и суффиксы, как например name_, mName, s_name и kName не используются. Так же сказано: Не константные поля класса (статические и другие) пишутся в lowCamelCase-стиле. PS: какая-то засада. Столько привыкал к этим "m" теперь отвыкать опять что-ли .. UPDATE2 Перевод статьи Cédric Beust, человека, ответственного за появление префиксов для полей класса в рекомендациях по оформлению кода Android приложения, где он объясняет, как такое произошло.

Ответ 2



Я могу предполагать, что этот префикс m соответствует слову member и используется для обозначения членов класса, чтобы отличать их от локальных переменных. Эта традиция идет от Microsoft MFC.

Комментариев нет:

Отправить комментарий