为什么很多人写代码会在变量名前面加一个小写的m?
上大学那会儿就对这个问题感到很好奇。于是网上到处搜,有人说是member的意思。于是后来一直就这么认为。
最近在读Android源码,发现很多系统变量命名时都加了m,而有的变量又没有加m,这是什么情况?
于是Google了一把,“letter m before variable ”,第一条结果是来自stackoverflow的答案。
终于看到一个不同的答案了, The use of the "m" prefix is more specific than simply denoting a "member" variable.这个是Google官方的介绍。
http://source.android.com/source/code-style.html#follow-field-naming-conventions
-
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.
For example:
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; }
非公有的变量前面要加上小写m,
静态变量前面加上小写s,
其它变量以小写字母开头,
静态变量全大写。
除了protected外,其它的带有m的变量在子类中是无法访问的。