您是将私人领域分组还是将其与其财产分开?

时间:2008-11-08 14:10:33

标签: c# layout coding-style

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

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,但有时候在该网站旁边的字段旁边也很方便。

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

6 个答案:

答案 0 :(得分:7)

我认为无论团队感到满意。制定项目/公司/语言的标准并坚持下去。我更喜欢私有变量,方法/接口,私有成员....我认为你明白了。

答案 1 :(得分:4)

我将它们归类于班级的最高层。

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

我会采用后一种方法,因为它是一种惯例,可以帮助我一眼就看出私人成员是否有公共吸气者/制定者。不过,两种方式都不是很大。

答案 4 :(得分:1)

重申Kenny上面所说的内容,这完全取决于您组织的编码标准。虽然每个人似乎都有自己的观点,但很难客观地将一种风格分类为另一种风格。

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

答案 5 :(得分:1)

作为旁注,自动属性适用于哪里?

C# 3.0 auto-properties - useful or not?