Java:我应该使用“this”关键字还是“m_”前缀?

时间:2014-07-21 23:43:30

标签: java instance-variables

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

class Foo
{
    private int bar;

    public Foo(int bar)
    {
    this.bar = bar;
    }
}

或“m_”前缀(匈牙利命名约定,其中m表示“成员变量”)...

class Foo
{
    private int m_bar;

    public Foo(int bar)
    {
    m_bar = bar;
    }
}

是否有任何一种情况可以提供优势?

2 个答案:

答案 0 :(得分:9)

this是标准的,更具可读性且不易出错。

当您错误地隐藏变量或尝试访问静态代码中的非静态字段时,它会对您有所帮助。

即避免这个

int m_bar;
public Foo(int m_bar)
{
  m_bar = m_bar;
}

和     static int m_bar;

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

答案 1 :(得分:2)

使用this。它正是为这种用法提供的Java语法,开发人员熟悉它并帮助减少几个极端情况下的语法错误。

在Java中为字段名称添加前缀的一个可能问题是,生成getter和setter的工具也不会起作用。此外,一些Java Bean工具(如Jackson或GSON)现在需要映射来映射您的对象字段名称。最后,由于它不遵循Java风格或约定,maintenance developer将不会感到高兴。