当前位置:  开发笔记 > 编程语言 > 正文

在Java中,为什么人们用`this`前置字段?

如何解决《在Java中,为什么人们用`this`前置字段?》经验,为你挑选了6个好方法。

引用类变量时,为什么人们会在它前面添加this?我不是在谈论this用于消除方法参数歧义的情况,而是在看似不必要时.

例:

public class Person {        
    private String name;

    public String toString() {
        return this.name;
    }
}

toString,为什么不直接引用namename

return name;

什么this.name买什么?

这是一个stackoverflow问题,其代码已this预先挂起.



1> Doug Currie..:

    防御性编程(如果有人编辑代码,以后会添加一个参数或带有冲突名称的本地

    使代码"自我记录"更加明显



2> Daniel Spiew..:

有时需要消除歧义:

public void setFoo(Bar foo) {
    this.foo = foo;
}

在其他时候,这只是一种风格.总的来说,我尽量避免this.blah使用,因为它更冗长.如果您想知道,结果字节码完全相同.



3> Joseph Daigl..:

它在语言层面没有任何作用.但它确实可以立即指示某人阅读有关变量范围的代码,从而提高对代码的理解.



4> jwanagel..:

我经常看到人们这样做是因为它触发了智能感知.我个人更喜欢放弃"这个".因为它创造了更多没有任何价值的代码.


但是没有它你仍然可以触发intellisense.Eclipse和IntelliJ中空白链接上的Control-Space触发intellisense.它与`this`中的Control-Space相同.

5> duffymo..:

同样的原因,有些人喜欢用"m_"或名称接口"IFoo"来预置私有数据成员.他们相信它提高了可读性和清晰度.您是否同意这些惯例是一个品味问题.



6> huseyint..:

在.NET世界中,Microsoft StyleCop工具还有一个名为"Prefix Local Calls With This"的规则:

只要代码包含对本地类的实例成员的调用或没有以"this"为前缀的基类,就会违反此规则.当存在基类成员的本地覆盖时,会发生此规则的例外,并且代码打算直接调用基类成员,绕过本地覆盖.在这种情况下,调用可以以"base"为前缀.而不是'这个'.

默认情况下,StyleCop不允许使用下划线或m_来标记本地类字段,而是支持'this'.字首.使用'this'的好处.它同样适用于所有元素类型,包括方法,属性等,而不仅仅是字段,使得对类成员的所有调用都可以立即识别,无论使用哪个编辑器来查看代码.另一个优点是它在实例成员和静态成员之间创建了一个快速,可识别的区别,它们不是前缀.

使用'this'的最后一个好处.输入前缀就是这个.将导致Visual Studio显示IntelliSense弹出窗口,使开发人员可以快速轻松地选择要调用的类成员.

我的建议是选择一个约定(使用或不使用)并坚持使用.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有