始终使用this-keyword作为前缀(自动)属性是一种好习惯吗?

Mat*_*els 7 c# this automatic-properties prefix

自从我发现汽车房产以来,我试着到处使用它们.以前我会在课堂上使用的每个属性都会有一个私人成员.现在这被auto属性所取代.我通常使用普通成员字段的方式在我的类中使用该属性.问题是该属性以国会大厦开始,这使得在以这种方式使用它时看起来有点奇怪.我之前并不介意属性从国会大厦开始,因为它们总是落后于"点".现在我发现自己在内部添加了我内部使用的所有属性this.,以此来抚慰我的感觉.

我的困境是,在我总是有点反对使用内部成员的所有用法前缀this.,除非"必要"(如在setter或构造函数中).所以我有点想找到第二个意见.有没有一个标准的好方法来做到这一点?我应该停止抱怨(我倾向于成为"蚂蚁驼背"(荷兰语表达))?

之前:

class Foo
{
    private Bar bar;
    public Bar Bar { get { return bar; } }

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

    public void DoStuff()
    {
        if(bar != null)
        {
            bar.DoMethod();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

后:

class Foo
{
    public Bar Bar {get; private set;}

    public Foo(Bar bar)
    {
        this.Bar = bar;
        // or
        Bar = bar;
    }

    public void DoStuff()
    {
        if(this.Bar != null)
        {
            this.Bar.DoMethod();
        }
        // or
        if(Bar != null)
        {
            Bar.DoMethod();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

更新

似乎意见各不相同,尽管更多的人赞成加上前缀this..在自动属性之前,我总是反对使用前缀this.而不是构造函数和setter(如前所述).但现在我不知道了.

附加说明:将属性命名为class(public Bar Bar { get; private set; })通常也很常见,这也使我倾向于使用前缀.每次我打字Bar.DoMethod(),我觉得它看起来像一个静态的方法.即使VS Bar是静态方法而且你不能拥有具有相同签名的静态和实例方法,它也会着色.当它被着色时,很明显它是一种静态方法,但是当它没有着色时,它不是100%清楚它不是静态方法.例如,您可能只是错过了一个using语句,但也因为我不习惯将未被着色的链接与是否是静态调用相关联.在成员的情况下通过首字母大写或在属性的情况下通过"点"立即看到它之前(例如"点"fooin (Foo)foo.Bar.DoMethod()).

(目前很难选择"接受的答案")

Abe*_*bel 6

是的,有一种"标准方法":大写字母和这个前缀被认为是良好的编码实践.如果您使用某种工具来测试代码以获取编码指南(如ReSharper或Microsoft自己的StyleCop),则会在不使用this-reference时向您发出警告,或者如果您没有使用资本启动您的属性.

您的属性是公开可见的.任何公共财产,领域或方法都应以资本开头.

您在自己的类中调用的属于该类的任何属性,字段或方法都应该使用this-reference作为前缀,以便于阅读.

更新:当然,意见各不相同.我喜欢点击this.然后在点之后只看到成员,而不是在没有任何前缀的情况下点击ctrl-space时看到所有关键字.这对我有帮助.但是,最后(引自这里):

无论您的意见如何,重要的是所有与项目密切合作的人都使用相同的格式标准,无论这些标准是什么.

更多参考资料:
Microsoft几乎以任何名称和属性使用大写字母.这里有
更多指南.

  • 嘿,好笑.DevExpress CodeRush完全相反 - 它警告你不必要地使用"this".虽然我无视它并且仍然使用它 - 我也喜欢这个指南. (2认同)

thi*_*eek 6

我强烈建议使用' this.' 在可能的情况.框架设计指南推荐这种做法.它让您从可读性的角度了解范围,并帮助您避免编译器在编译时报告的愚蠢错误.

  • 当有人使用不必要的消歧前缀时,我个人讨厌它. (5认同)