为什么Android教程中的大多数字段(类成员)都以`m`开头?

我知道骆驼案例规则,但我对这个规则感到困惑。 它代表什么? 我是一名PHP开发人员。 “我们”使用变量的第一个字母作为类型的指示,如“b”表示布尔值,“i”表示整数,依此类推。

是'Java'吗? 它代表移动吗? 混合使用吗?


#1楼

许多编码指南行使用m作为类的“成员”。 因此,当您编程时,您可以看到本地变量和成员变量之间的差异。


#2楼

如果它是类中的成员变量,则“m”表示“成员”。 许多Java程序员都这样做,虽然使用现代IDE,因为你有突出显示,鼠标悬停在工具提示等等,所以不需要它。


#3楼

我认为使用哪种代码约定非常个性化。 我更喜欢用以下前缀命名我的变量:

  • m - 方法变量
  • c - 类变量
  • p - 参数变量

但我想每个程序员都有自己的风格。


#4楼

什么是m前缀?

m代表成员变量或数据成员。 将m前缀用于非公共和非静态字段。

什么时候用?

private String mCityName;
private float mTemperature;

什么时候不用?

public static int mFirstNumber;
public static final String mDATABASE_NAME;

我所做的?

就个人而言,我不使用它。 它使代码更复杂并且使可读性变得混乱。 如果您仍然使用记事本进行编码我没有任何文字,但现代IDE能够突出显示和着色成员和局部变量或其他任何东西。

结论

使用? “是”或“否”是您的个人选择。


#5楼

如前所述,它的设计风格为不同的变量。 但它对代码生成也非常有用。 如果按“Alt + Insert”,您将获得大多数常见代码生成属性的窗口。 如果你想为变量生成“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-> Setting-> Code Style-> Java-> Code Genenretion。 并制作一张照片。 也许它会有所帮助。 对不起,我的工程师。 配置android


#6楼

根据清洁代码书,这不是一个干净的代码。

您不需要使用m为成员变量添加前缀。 此外,人们很快学会忽略前缀或后缀以查看名称的有意义部分。


#7楼

作为可读性的问题的公约m的成员变量和s的静态字段不应该再被使用,如果您使用的是最新的IDE像Android的工作室。 Android Studio可以在不添加ms情况下区分它们。


#8楼

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

    private double mRadius;

但与此同时,你想要一个计数器来跟踪你可以拥有的圆圈类内的所有圆圈

    private static int sCircleCount;

然后只需要静态成员来增加和减少您当前拥有的圈数。


#9楼

似乎一些早期的Android / Google工程师个人偏好用“m”启动成员变量,所以他们推荐它。

现在,这条规则正被强制要求那些既不是AOSP贡献者的公司的开发人员的喉咙,只是因为该页面被认为是Android Code Style规则。 该规则几乎没有任何好处。 谷歌应考虑删除它。 否则,请为Android应用程序指定哪些代码样式规则是可选的。

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


#10楼

为了证明你定义不应该在代码中为命名变量处理这个约定,我从下面的父Android Studio传递截图。

在对象内部找到一个特殊排序的变量 ,将m变量放在低于原生变量的位置 。 因此,通过在代码中使用“m”前缀命名它们,可以将它们隐藏在自己的堆中

在此输入图像描述


#11楼

我发现这种代码风格的一个好处是,在对变量的一些引用的自动完成期间,我知道我可以键入“m”来查看成员变量。


#12楼

如果你有类似的问题

您的IDE生成setter / getters,最终得到getmName()和setmName()

不要忘记下一步( 设置/编辑器/代码样式/ Java /代码生成 ):

在此输入图像描述

更新:我们在Kotlin中不使用这样的东西(所以最好切换到它并且不再使用前缀)


#13楼

以下是命名约定,

  • 非公开的非静态字段名称以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;
}

#14楼

此表示法来自AOSP(Android开源项目) 代码风格指南

遵循现场命名约定

  • 非公开的非静态字段名称以m开头。
  • 静态字段名称以s开头。
  • 其他字段以小写字母开头。
  • 公共静态最终字段(常量)是ALL_CAPS_WITH_UNDERSCORES。

请注意,链接样式指南用于将代码提供给Android开源项目。

它不是单个Android应用程序代码的样式指南。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值