为什么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;
我觉得它更具可读性。谁可以向我解释前缀的优缺点?
答案 0 :(得分:6)
以 m 开头的变量告诉您它们是您班级范围内的变量。班上的成员。
答案 1 :(得分:1)
m
只代表'会员'。简单地声明您的变量是类成员
它更易读,因为你知道Class Members被声明的位置,所以你可以很快找到它。即使您没有为变量添加this
前缀,也不需要编写m
。
在您的示例中,this
仅在没有前缀-m时使其更具可读性。另一个开发人员知道它是一个实例变量(成员变量),因此在类的顶部或底部声明。
答案 2 :(得分:1)
它是类成员变量的前缀。这只是一个命名惯例。
大部分肯定,取自Hungarian Notation,其中类似的前缀:m_
代表完全相同的内容。
参考专业人士缺点:
优点:
缺点:
一般来说,这是一种重新发明的轮子。 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。