为什么Google调用前缀为“m”的变量?

时间:2015-07-07 08:43:35

标签: android

为什么Google会调用前缀为“m”的变量,例如:

    private int mSectionResourceId;
    private int mTextResourceId;

我在所有例子中都看到了它。但我不明白为什么他们这样做?

现在我有一些实例非常好的例子。如果一个没有前缀的被调整的变量带我需要写

public SimpleSectionedRecyclerViewAdapter(Context context, int sectionResourceId, int textResourceId,
                                              RecyclerView.Adapter baseAdapter) {
        this.sectionResourceId = sectionResourceId;
        this.textResourceId = textResourceId;

但如果我使用前缀我可以写

public SimpleSectionedRecyclerViewAdapter(Context context, int sectionResourceId, int textResourceId,
                                              RecyclerView.Adapter baseAdapter) {

        mSectionResourceId = sectionResourceId;
        mTextResourceId = textResourceId;

我觉得它更具可读性。谁可以向我解释前缀的优缺点?

5 个答案:

答案 0 :(得分:6)

m 开头的变量告诉您​​它们是您班级范围内的变量。班上的成员。

Link to Android Code Style Guide

答案 1 :(得分:1)

m只代表'会员'。简单地声明您的变量是类成员 它更易读,因为你知道Class Members被声明的位置,所以你可以很快找到它。即使您没有为变量添加this前缀,也不需要编写m

在您的示例中,this仅在没有前缀-m时使其更具可读性。另一个开发人员知道它是一个实例变量(成员变量),因此在类的顶部或底部声明。

答案 2 :(得分:1)

它是类成员变量的前缀。这只是一个命名惯例。

大部分肯定,取自Hungarian Notation,其中类似的前缀:m_代表完全相同的内容。

参考专业人士缺点:

  1. 优点:

    • 它允许在编程期间输入更少的字符
    • 习惯使用匈牙利表示法的程序员可能会更容易理解代码。
  2. 缺点:

    • 由于代码经常变化,每当变量改变目的时(特别是在原型制作过程中),很容易忘记每次更改前缀,
    • 它使代码开始闻起来很糟糕,
  3. 一般来说,这是一种重新发明的轮子。 Java有this个关键字,应该足以访问适当的变量。如果不是,代码需要重构,可能是因为命名故障或使用过宽的变量范围。

    就个人而言,我不建议使用匈牙利表示法(甚至是Android Code Style的一部分)。我们有很棒的IDE可以提高代码的可读性。

    有一个例外。代码,其中已使用匈牙利表示法(或更一般的,特定的代码样式)。这是consistency的问题。

答案 3 :(得分:0)

m只是一个成员变量。如果你愿意,可以成为集体成员可以使用像WebView M WebView这样的构造函数,然后使用像mWebView.loadurl("example.com");这样的东西,它只是你创建的变量的占位符。您不必将成员类变量添加为m,但如果您执行

,则会更有条理

答案 4 :(得分:-1)

有些人喜欢用'my'前缀开始自己的变量,主要是为了区分自己的变量和其他代码中引入的变量。

我认为Google只是将'my'缩写为'm'。但是,我认为为变量名添加前缀是不好的做法。前缀没有说明变量本身的内容;它不是很具描述性。这是一个关于这个主题的有趣article

相关问题