4

有时可能会混淆阅读引用同一类(或基类)的其他实例成员的实例成员中的代码:

public void MyMethod()
{
    Where = did + AllTheseWeirdThings(GetDeclared()); // ?
}

拥有类似“用“_”作为所有私有/受保护成员前缀的编码标准并没有帮助,因为实例成员仍然可以引用公共成员。

阅读此内容会更好:

public void MyMethod()
{
    this.Where = this.did + base.AllTheseWeirdThings(this.GetDeclared()); // ?
}

有没有办法通过编译器选项、StyleCop 或类似的东西来强制执行此操作?

4

2 回答 2

6

没有编译器选项可以强制执行您的规则。

然而,粗略的谷歌搜索带来了这条 StyleCop 规则:http ://www.thewayithink.co.uk/stylecop/sa1101.htm

ReSharper 有一个类似的选项。

于 2010-08-14T18:15:34.923 回答
4

在 C# 中 this 和 base 是可选的。您需要使用它们的唯一时间(在这种情况下)是如果存在歧义。没有编译器开关可以更改此行为。

我还建议不要添加 StyleCop 规则。通常最好只在必要时使用 this 和 base ,例如在你可能编写的构造函数中:

this.foo = foo;

强制使用“this”和“base”关键字不会使代码质量更好,或者更具可读性。如果您的代码如此混乱以至于您无法弄清楚成员的定义位置,我建议重构它并使您的类层次结构更简单。

于 2010-08-14T18:15:12.113 回答