我知道骆驼格规则,但我对这个m规则很困惑。它代表什么?我是PHP开发人员。“我们”使用变量的首字母来表示类型,例如'b'表示布尔值,'i'表示整数,等等。

“m”是Java的东西吗?它代表移动吗?混合吗?


当前回答

以下是命名约定:

非公共的、非静态的字段名以m开头。 静态字段名以s开头。 其他字段以小写字母开头。 公共静态final字段(常量)为all_caps_with_下划线。

例子:

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'表示'成员'。许多Java程序员都这样做,尽管在现代ide中不需要这样做,因为你有高亮显示,鼠标在工具提示上,等等。

我发现这种代码风格的一个好处是,在自动完成对某个变量的引用时,我知道我可以输入“m”来只看到成员变量。

很多编码指南使用m表示类的“成员”。当你在编程时,你可以看到局部变量和成员变量之间的区别。

这似乎是一些早期Android/谷歌工程师的个人偏好,以“m”开始成员变量,所以他们推荐它。

现在,这条规则被强加给那些既不是AOSP贡献者的公司的开发人员,仅仅是因为该页面被认为是Android代码风格规则。这条规则几乎没有什么好处。谷歌应该考虑删除它。否则,请指定Android应用程序的代码风格规则是可选的。

请在此请愿书中添加您的支持意见,以删除规则https://code.google.com/p/android/issues/detail?id=226814

也可以说它代表“我的”,就像在类/实例中说的那样:“这个变量是我的,没有其他人可以得到它。”与静态不同的是,虽然它可能只对类可用,但它由该类的所有实例共享。就像你在画圆,你需要知道每个圆的半径有多大

    private double mRadius;

但与此同时,你需要一个计数器来跟踪所有的圆,在circle类中

    private static int sCircleCount;

然后只有静态成员来增加或减少你目前拥有的圆的数量。