【问题标题】:Do you group private fields or put them with their property?您是对私有字段进行分组还是将它们与他们的财产放在一起?
【发布时间】:2010-09-21 10:40:58
【问题描述】:

我已经在各种项目中看到(并使用过)这种布局,一组字段后跟一组属性:

private int MyIntField;
private string MyStringField;

public int MyInt { 
    get { return MyIntField; }
    set { MyIntField = value; }
}    
public string MyString { 
    get { return MyStringField; }
    set { MyStringField = value; }
}

我也遇到过这种布局,其属性旁边有字段:

private int MyIntField;
public int MyInt { 
    get { return MyIntField; }
    set { MyIntField = value; }
}    

private string MyStringField;
public string MyString { 
    get { return MyStringField; }
    set { MyStringField = value; }
}

有理由认为一个比另一个更好吗?我认为大多数编码标准都推荐选项 #1,但有时将字段放在对其进行操作的属性旁边会很方便。

注意:我假设非平凡的属性不能使用自动实现的属性。

【问题讨论】:

标签: c# layout coding-style


【解决方案1】:

我认为这是团队觉得舒服的事情。确定项目/公司/语言的标准并坚持下去。我更喜欢私有变量,方法/接口,私有成员......我想你明白了。

【讨论】:

    【解决方案2】:

    我把他们排在班级的首位。

    事实上,唯一超过我的私有属性的就是类的所有常量。

    【讨论】:

      【解决方案3】:

      我有点喜欢将字段分组在顶部,而将属性分组在其他位置。这也是Microsoft StyleCop 推荐的。

      【讨论】:

        【解决方案4】:

        我会采用后一种方法,因为它是一种约定,可以帮助我一目了然地了解私有成员是否具有公共 getter/setter。不过,这两种方式都不是什么大不了的事。

        【讨论】:

          【解决方案5】:

          重申上面 Kenny 所说的话,这实际上与贵组织的编码标准有关。尽管每个人似乎都有自己的看法,但很难客观地对一种风格进行分类。

          我通常更喜欢通过访问修饰符来分组数据和方法,因此在这种情况下更喜欢选项#1。这是为了强调界面,而不是设计。也就是说,我将来可以透明地更改 MyInt 修饰符的实现(也许我真的不需要存储支持变量)。

          【讨论】:

            【解决方案6】:

            作为旁注,自动属性适用于何处?

            C# 3.0 auto-properties - useful or not?

            【讨论】:

              猜你喜欢
              • 2016-11-23
              • 2010-09-09
              • 1970-01-01
              • 2018-04-07
              • 2017-10-29
              • 1970-01-01
              • 1970-01-01
              • 2012-01-23
              • 1970-01-01
              相关资源
              最近更新 更多