1

我有一个我感兴趣的问题,在编程方面什么会更好:使用Class members还是Getter从 My Class 内部?例如这是我的课:

public class myClass
{
    private string _name;
    private int _length;
    private int _weight;

    public void doSomething(myClass obj)
    {

    }

    public void doSomething2(myClass obj)
    {

    }

    public string name
    {
        get { return _name; }
    }

    public int length
    {
        get { return _length; }
    }

    public int weight
    {
        get { return _weight; }
    }
}

以这种方式使用 doSomething:

public void doSomething(string str, myClass obj)
{
    string[] arr = str.Split(' ');
    arr[1] = obj._name;
    arr[2] = obj._length;
    arr[3] = obj._weight;
}

或者这样:

public void doSomething2(string str, myClass obj)
{
    string[] arr = str.Split(' ');
    arr[1] = obj.name;
    arr[2] = obj.length;
    arr[3] = obj.weight;
}
4

2 回答 2

1

如果您为Getter变量提供 a,我会使用getters. 只是为了保持一致。如果您同时使用它们,可能会让人感到困惑(对您和其他程序员而言)。

如果您使用getters无处不在 - 并且将来对该属性执行代码搜索 - 您会找到所有这些,但如果您有时使用private variable,您会错过一些。

这个答案是:你应该通过类中的属性访问你的私有变量吗?

于 2013-09-20T06:50:44.273 回答
0

奥德的回答

  • 使用自动实现的属性时,您别无选择 - 您必须使用该属性,因为您无权访问生成的字段。

  • 如果您的属性不简单并且做了一些额外的工作(验证、触发事件等),您应该调用该属性以集中访问和逻辑。

  • 如果您有任何其他属性(意味着没有逻辑和支持字段的简单属性),我会问为什么它们不是上述之一......

  • 对于您提供的示例,它几乎没有什么区别 - 更重要的是与您如何使用这些保持一致,并且真正归结为个人审美和编码风格。

TheCodeJunkie 的回答

  • 通过属性访问本地(类范围)变量的一个更强有力的论据是您在类中添加了一个抽象级别。如果您更改有关该字段如何存储的任何逻辑,则其余代码将不受影响。

  • 例如,您可以将其从局部变量更改为子对象的属性、数据库调用、Web 服务调用、类的静态属性等等。进行更改时,它会为您提供单点更改,即属性,并且您不必更新类的其余部分,因为它们都使用该属性。

  • 此外,使用该属性还可以让您对属性的值应用业务规则,而不必在您直接访问该字段的每个位置强制执行相同的规则。再次,封装

  • 随着自动属性的引入,除非您需要在 get/set 上应用业务规则,否则显式拥有局部变量的理由就更少了

于 2013-09-20T06:55:32.253 回答