5

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

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,但有时将字段放在对其进行操作的属性旁边会很方便。

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

4

6 回答 6

7

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

于 2008-11-08T14:12:33.153 回答
4

我将他们分组在班级的顶部。

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

于 2008-11-08T14:13:47.987 回答
3

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

于 2008-11-08T14:42:30.987 回答
2

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

于 2008-11-08T14:14:37.393 回答
1

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

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

于 2008-11-08T14:19:14.437 回答
1

作为旁注,汽车属性在哪里适合?

C# 3.0 自动属性 ​​- 有用与否?

于 2008-11-08T15:47:48.890 回答