Java:我应该使用“吗?”;这";关键词或;";前缀

Java:我应该使用“吗?”;这";关键词或;";前缀,java,instance-variables,Java,Instance Variables,要引用实例变量,我是否应该使用“this”关键字 class Foo { private int bar; public Foo(int bar) { this.bar = bar; } } 或“m_u3;”前缀(匈牙利命名约定,其中m表示“成员变量”) 是否存在一种情况比另一种情况更具优势?此标准、可读性更强且不易出错 当您错误地隐藏变量或试图访问静态代码中的非静态字段时,它将帮助您 i、 e.避免这种情况 int m_bar; public Foo

要引用实例变量,我是否应该使用“this”关键字

class Foo
{
    private int bar;

    public Foo(int bar)
    {
    this.bar = bar;
    }
}
或“m_u3;”前缀(匈牙利命名约定,其中m表示“成员变量”)


是否存在一种情况比另一种情况更具优势?

标准、可读性更强且不易出错

当您错误地隐藏变量或试图访问静态代码中的非静态字段时,它将帮助您

i、 e.避免这种情况

int m_bar;
public Foo(int m_bar)
{
  m_bar = m_bar;
}
及 静态int m_条

int m_bar;
public Foo(int bar)
{
  this.bar = m_bar; // a warning static field being accessed as non-static
}

使用
。Java语法正是为这种用法而提供的,开发人员对它很熟悉,并且有助于减少某些情况下的语法错误


在Java中前缀字段名可能存在的一个问题是,用于生成getter和setter的工具无法正常工作。此外,一些JavaBean工具(如Jackson或GSON)现在需要映射来映射对象字段名。最后,因为它没有遵循Java风格或惯例,所以不会令人满意。

您应该使用
这个
,因为它实际上是Java风格和Java语法。这里有两个不同的问题-都是主观的。1) 我不使用
m_
,2)我只在需要时才使用
this
。@user2864740 OP似乎建议在需要
this
时使用“m_”。我相信到目前为止的共识是不要那样做。@ElliottFrisch我能理解你的观点。。但这似乎是一个愚蠢的建议。@redFIVE可能,仅仅使用
this.bar=bar
更具可读性。我发现使用不同变量名的人往往是初学者或没有戒掉这个习惯的人。但随着时间的推移,我开始使用
this
在内部引用类方法和字段。我不同意这一点,但这是一个主观的问题/答案。我只在需要的地方使用
this
(而
m
根本不使用)。我的IDE(go JetBrains!)告诉我什么时候它是“错误的”。你不应该依赖IDE的错误保护。我同意这个答案,因为用户给出的例子是一个需要消除歧义的明显例子。“m_”不遵循camel case变量名的通用标准,“this”是使用的通用标准。@kharyam两种情况的出现令人困惑,导致了一个糟糕的问题,因此我不同意最初的建议<代码>此有时是必需的,但其他则不是
m
只是一种惯例。两种不同的[主观]情况。@user2864740但是,使用与属性名相同的支持字段几乎是Java的通用用法。您还可以说,以大写字母开头Java类名是主观的。
int m_bar;
public Foo(int bar)
{
  this.bar = m_bar; // a warning static field being accessed as non-static
}