What is the advantage of having this/self pointer mandatory explicit?
使用
根据OOP理论,一种方法应该主要(仅是?)关于成员变量和方法参数。接下来,引用成员变量应该比引用外部变量(从对象的角度)更容易…显式
除了成员变量和方法参数,您还拥有局部变量。关于对象最重要的事情之一就是它的内部状态。显式成员变量取消引用使您可以非常清楚地看到在哪里引用该状态以及在哪里修改该状态。
例如,如果您有如下代码:
1 2 3 4 5 | someMethod(some, parameters) { ... a segment of code foo = 42; ... another segment of code } |
当快速浏览它时,您必须有一个在前面部分中定义的变量的心理模型,以知道它是一个临时变量还是改变了对象的状态。而this.foo=42则表明对象状态发生了变化。如果只使用显式取消引用,则可以确保变量在相反的情况下是临时的。
较短的、经过充分考虑的方法使它变得不那么重要,但是,长期的可理解性在编写代码时胜过了一点便利性。
如果您在谈论"显式的
您需要它将指针/引用传递到其他地方的当前对象,或者在赋值运算符中防止自赋值。
如果一个方法的参数与成员变量同名怎么办?然后您可以使用
我通常只在编写赋值操作符或复制构造函数时使用这个(C++),因为它有助于清楚地识别变量。我可以考虑使用它的另一个地方是,如果函数参数变量名与成员变量名相同,或者我想使用delete this来杀死我的对象。
例如,成员名称与传递给方法的名称相同
1 2 3 4 5 6 | public void SetScreenTemplate(long screenTemplateID, string screenTemplateName, bool isDefault) { this.screenTemplateID = screenTemplateID; this.screenTemplateName = screenTemplateName; this.isDefault = isDefault; } |