我已经在各个项目中看到(并使用过)这个布局,其中一组字段后跟一组属性:
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,但有时候在该网站旁边的字段旁边也很方便。
注意:我假设不能使用自动实现属性的非平凡属性。
答案 0 :(得分:7)
我认为无论团队感到满意。制定项目/公司/语言的标准并坚持下去。我更喜欢私有变量,方法/接口,私有成员....我认为你明白了。
答案 1 :(得分:4)
我将它们归类于班级的最高层。
事实上,唯一超出我的私有属性的是该类的所有常量。
答案 2 :(得分:3)
我喜欢将字段分组在顶部,将属性分组到其他地方。这也是Microsoft StyleCop推荐的内容。
答案 3 :(得分:2)
我会采用后一种方法,因为它是一种惯例,可以帮助我一眼就看出私人成员是否有公共吸气者/制定者。不过,两种方式都不是很大。
答案 4 :(得分:1)
重申Kenny上面所说的内容,这完全取决于您组织的编码标准。虽然每个人似乎都有自己的观点,但很难客观地将一种风格分类为另一种风格。
我通常倾向于选择通过访问修饰符来获取数据和方法组,因此在这种情况下更喜欢选项#1。这是为了强调界面,而不是设计。也就是说,我可以在将来透明地改变MyInt修饰符的实现(也许我真的不需要存储支持变量)。
答案 5 :(得分:1)
作为旁注,自动属性适用于哪里?