【问题标题】:C# style: May properties be grouped with their backing fields?C# 风格:可以将属性与其支持字段分组吗?
【发布时间】:2011-08-29 05:00:51
【问题描述】:

我喜欢这样组织简单的属性:

private int foo;
public int Foo
{
    get { return foo; }
    set
    {
        // validate value
        foo = value;
    }
}

我一直在玩StyleCop,它对我在构造函数之后放置字段大喊大叫。只要该字段从未在属性之外引用,这种样式是否被普遍接受?注意:我知道这涉及到个人偏好,但我想知道在这个问题上是否存在普遍共识。

【问题讨论】:

    标签: c# properties coding-style field backing-field


    【解决方案1】:

    是的,我觉得这很合理。

    通常我将所有字段和属性放在顶部,然后是构造函数,然后是方法 - 但如果您想将它们放在构造函数之后,这似乎也很合理。

    【讨论】:

      【解决方案2】:

      如果您的属性将是简单的数据访问,请考虑使用自动属性:

      public int Foo { get; set; }
      

      编译器会在后台代表你创建一个私有成员变量。

      特别是针对您的问题,不要过多购买 ReSharper 或 StyleCop 等工具。他们格式化代码的一些方式,以及他们抱怨的事情确实是一个偏好问题。我没有将成员变量放在它们的公共属性附近,但我可以看到这会很方便。

      【讨论】:

      • 我只能猜测反对票是因为 OP 在他们的代码示例中有// validate value,所以他们不会只使用可以以这种方式使用的简单属性。不过,不要真的认为这值得投反对票。
      【解决方案3】:

      五月?由于这只会影响您团队中的人员,因此您必须弄清楚他们认为什么是最好的,然后去做。 Style Cop 的建议常常有点……过火了。

      我通常把它们放在 属性之后,因为上面的空间是为文档保留的。

      // placed up here, it looks kinda weird, imho
      // private int foo;
      /// <summary>
      /// The index of the Foo in the <see cref="Bar"/>
      /// </summary>
      public int Foo
      {
          get { return foo; }
          set
          {
              // validate value
              foo = value;
          }
      }
      private int foo;
      

      【讨论】:

        【解决方案4】:

        这可能是一个偏好问题,但这似乎比让他们与私人成员混合更好。

        我通常使用嵌套区域来支持属性区域内的字段,因为它不会干扰 Visual Studio cmets,而且它们被组合在一起。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-12
          • 1970-01-01
          • 1970-01-01
          • 2013-05-06
          • 1970-01-01
          • 2011-05-09
          • 2019-12-20
          • 2010-11-06
          相关资源
          最近更新 更多