Ste*_*Kuo 25 java coding-style
引用类变量时,为什么人们会在它前面添加this?我不是在谈论this用于消除方法参数歧义的情况,而是在看似不必要时.
例:
public class Person {
private String name;
public String toString() {
return this.name;
}
}
Run Code Online (Sandbox Code Playgroud)
在toString,为什么不直接引用name的name?
return name;
Run Code Online (Sandbox Code Playgroud)
什么this.name买什么?
这是一个stackoverflow问题,其代码已this预先挂起.
Dan*_*wak 37
有时需要消除歧义:
public void setFoo(Bar foo) {
this.foo = foo;
}
Run Code Online (Sandbox Code Playgroud)
在其他时候,这只是一种风格.总的来说,我尽量避免this.blah使用,因为它更冗长.如果您想知道,结果字节码完全相同.
jwa*_*gel 10
我经常看到人们这样做是因为它触发了智能感知.我个人更喜欢放弃"这个".因为它创造了更多没有任何价值的代码.
在.NET世界中,Microsoft StyleCop工具还有一个名为"Prefix Local Calls With This"的规则:
只要代码包含对本地类的实例成员的调用或没有以"this"为前缀的基类,就会违反此规则.当存在基类成员的本地覆盖时,会发生此规则的例外,并且代码打算直接调用基类成员,绕过本地覆盖.在这种情况下,调用可以以"base"为前缀.而不是'这个'.
默认情况下,StyleCop不允许使用下划线或m_来标记本地类字段,而是支持'this'.字首.使用'this'的好处.它同样适用于所有元素类型,包括方法,属性等,而不仅仅是字段,使得对类成员的所有调用都可以立即识别,无论使用哪个编辑器来查看代码.另一个优点是它在实例成员和静态成员之间创建了一个快速,可识别的区别,它们不是前缀.
使用'this'的最后一个好处.输入前缀就是这个.将导致Visual Studio显示IntelliSense弹出窗口,使开发人员可以快速轻松地选择要调用的类成员.
我的建议是选择一个约定(使用或不使用)并坚持使用.
| 归档时间: |
|
| 查看次数: |
2242 次 |
| 最近记录: |