我知道骆驼案规则,但是我对这条m规则感到困惑。它代表什么?我是PHP开发人员。“我们”使用变量的首字母表示类型,例如“ b”表示布尔值,“ i”表示整数,依此类推。
是Java吗?它代表手机吗?混合?
我知道骆驼案规则,但是我对这条m规则感到困惑。它代表什么?我是PHP开发人员。“我们”使用变量的首字母表示类型,例如“ b”表示布尔值,“ i”表示整数,依此类推。
是Java吗?它代表手机吗?混合?
Answers:
此表示法来自AOSP(Android开放源代码项目)代码风格指南(针对贡献者):
遵循字段命名约定
- 非公共,非静态字段名称以m开头。
- 静态字段名称以s开头。
- 其他字段以小写字母开头。
- 公共静态最终字段(常量)为ALL_CAPS_WITH_UNDERSCORES。
请注意,链接的样式指南用于将代码添加到Android开放源代码项目中。
它不是单个Android应用程序代码的样式指南。
许多编码准则将m用作类的“成员”。因此,在编程时,您可以看到局部变量和成员变量之间的区别。
m
前缀更具可读性。
什么是m前缀?
m代表成员变量或数据成员。m对非公共和非静态字段使用前缀。
什么时候使用?
private String mCityName;
private float mTemperature;
什么时候不使用?
public static int mFirstNumber;
public static final String mDATABASE_NAME;
我做的事?
我个人不使用它。它使代码更加复杂,并且混乱了可读性。如果您仍在使用记事本进行编码,我不会说什么,但是现代的IDE能够突出显示和着色成员和局部变量或其他内容。
结论
采用?“是”或“否”是您的个人选择。
public static int
,但可以使用s
代替m
:public static int sFirstNumber;
,请参见stackoverflow.com/a/49453184/7767664
如果它是类中的成员变量,则“ m”表示“成员”。许多Java程序员都这样做,尽管在现代IDE中并不需要它,因为您具有突出显示,将鼠标悬停在工具提示上等优点。
我从这种代码样式中发现的一个好处是,在自动完成对变量的某些引用期间,我知道可以键入“ m”以仅查看成员变量。
如前所述,为不同的变量设置了样式。但这对于代码生成也非常有用。如果按“ Alt +插入”,您将获得最常用代码生成属性的窗口。如果您想为变量生成“ 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->设置->代码样式-> Java->代码生成。并像图片一样制作。也许会有所帮助。对不起,我的英文。 配置Android
似乎有些早期的Android / Google工程师个人偏向于以'm'开头成员变量,因此他们推荐了它。
现在,由于既不是AOSP贡献者,也不是公司中的开发人员,只因为该页面被视为Android代码样式规则,所以该规则就被迫了。那条规则几乎没有好处。Google应该考虑将其删除。否则,请指定对于Android Apps,哪些代码样式规则是可选的。
请添加对本请愿书的支持意见,以删除规则https://code.google.com/p/android/issues/detail?id=226814
以下是命名约定,
- 非公共,非静态字段名称以m开头。
- 静态字段名称以s开头。
- 其他字段以小写字母开头。
- 公共静态最终字段(常量)为ALL_CAPS_WITH_UNDERSCORES。
例:
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;
}