2011-04-27 71 views
0

在我为自己开发一些编码“最佳实践”的过程中,我想问问他们如何在类定义中安排类成员变量和getter/setter属性。我已经看到它通过两种方式完成...类设计 - 成员变量和属性 - 声明

(1)在类广告顶部声明类成员变量,然后在单独的部分中声明获取/设置这些成员变量的属性。

Class MyClass 
{ 
    String firstName; 
    String lastName; 

    public string FirstName 
    { 
    get { return firstName; } 
    set { firstName = value; } 
    } 

    public string LastName 
    { 
    get { return lastName; } 
    set { lastName = value; } 
    } 

} 

(2)在类的顶部声明类成员变量并在变量声明下面定义get/set属性。

Class MyClass 
{ 
    String firstName; 
    public string FirstName 
    { 
    get { return firstName; } 
    set { firstName = value; } 
    } 

    String lastName; 
    public string LastName 
    { 
    get { return lastName; } 
    set { lastName = value; } 
    } 

} 

虽然它可能是一个问题或个人喜好哪一种模式中,人们倾向于遵循如果可能的话,请给一个理由,为什么。谢谢。

+0

由于您在get/set中没有做任何事情,您是否考虑过使用autoproperties?那么你的问题就会消失...... – forsvarir 2011-04-27 20:55:28

回答

2

如果你不这样做的任何财产获取/套,使用自动属性,以后可以随时改变他们,如果你需要:

public string LastName {get;set;} 

就个人而言,我喜欢把我所有的根据客户感兴趣的东西(即公共资料)应该位于文件顶部的原则,在类的底部添加成员变量。很多人似乎更喜欢顶级会员,但对我来说总是显得有点落后:)

+1

是的,它总是对我倒退。我想这是你需要宣布某些东西才能使用它的日子的宿醉? – Grokys 2011-04-27 21:05:14

+0

我认为现代的IDE可以在结构上显示成员并根据需要对其进行排序,但事实并非如此。使用IDE中的导航栏在99%的时间内浏览代码有什么不同? – 2011-04-28 07:02:57

+0

@FractalizeR:说实话,我很少在IDE中使用导航栏。我倾向于尽量保持我的课程非常小/集中,并且我的手放在keyboad上。对于我来说,向上/向下翻页通常比将手放在鼠标上快。最有用的导航快捷键是'goto XXXX'系列,我可以通过键盘轻松访问这些快捷键。我想在一定程度上,这取决于你习惯了什么。 – forsvarir 2011-04-28 07:18:23

0

我更喜欢选项编号1,然后围绕字段区域中的字段,属性区域中的属性,构造函数,方法等等。这些区域当然允许您折叠部分代码以进一步提高可读性如果你只想看看构造函数)。

只是个人偏好,但使课程组织得很好。

+1

Eww,我讨厌地区。当我看代码时,我想看看它在做什么。你多久经常参加一个你以前从未见过的课程,并认为“我只想看看这门课程的构造函数”?你想看全班。海事组织不必要地混淆了代码。 – Grokys 2011-04-27 20:59:53

+0

嘿,给他们自己!我是地区爱人,我能说什么?作为一名顾问,我一直都在看代码,我没有写过,以前从未见过,是的,能够崩溃课程的某个方面是非常好的,米工作。 – BrandonZeider 2011-04-27 21:04:22

+0

嗯,每一个都是他自己的;)我发现知道什么是类比确定每个成员是否是构造函数/属性/方法更重要。您可以随时使用Ctrl + M,L折叠整个类,然后只展开无论如何你都感兴趣的方法。 – Grokys 2011-04-27 21:09:12

0

虽然这是个人喜好,但我更喜欢选项1,但是私人会员在底部。推理:API比实现更重要:

class MyClass 
{ 
    public string FirstName 
    { 
    get { return firstName; } 
    set { firstName = value; } 
    } 

    public string LastName 
    { 
    get { return lastName; } 
    set { lastName = value; } 
    } 

    String firstName; 
    String lastName; 
}