【问题标题】:Should I convert this getter into method? [closed]我应该将此吸气剂转换为方法吗? [关闭]
【发布时间】:2013-03-06 18:53:10
【问题描述】:

在过去的几天里,我一直在阅读 C# 中属性和方法之间的差异以及何时使用它们。我读过的大多数文章/问题都说 getter 应该是“轻量级”的,并且内部永远不会有大量的逻辑或复杂的操作。

现在我有一个get,我认为它介于属性和方法之间,所以我想看看大家的想法,如果我应该改用方法还是继续使用getter。

也欢迎任何其他建议:D

public decimal[] getPreprocData
{
    get
    {
        int i = 3;
        decimal[] data = new decimal[9];

        data[0] = (start.Value.Hour * 3600) + (start.Value.Minute * 60);
        data[1] = duration.Value;
        data[2] = flowRate.Value;

        foreach (NumericUpDown nud in gbHTF.Controls.OfType<NumericUpDown>().OrderBy(nud => nud.TabIndex))
        {
            data[i] = nud.Value;
            i++;
        }

        return data;
    }
}

【问题讨论】:

  • 这确实属于 codereview.stackexchange

标签: c# methods properties getter


【解决方案1】:

Properties & Field 通常是 Nounmethods & functions 一般是Verb

所以,getPreprocData 应该是 method。因为它代表了对对象(类)实例的操作。


从我自己的角度来看,由于您的财产从不使用setter,因此使用method 总是比使用property 更好。

当没有什么可设置的时候,拥有一个属性有什么意义呢?


你的属性可以作为方法实现:

public decimal[] GetPreprocData()
{
        int i = 3;
        decimal[] data = new decimal[9];

        data[0] = (start.Value.Hour * 3600) + (start.Value.Minute * 60);
        data[1] = duration.Value;
        data[2] = flowRate.Value;

        foreach (NumericUpDown nud in gbHTF.Controls.OfType<NumericUpDown>().OrderBy(nud => nud.TabIndex))
        {
            data[i] = nud.Value;
            i++;
        }

        return preprocData;
}

【讨论】:

  • 绝对应该是一种方法。不知道你是否应该用“get”作为前缀。如果结果是你总是分配给某物的东西,即使它是一种方法,它也应该有一个名称的名词,否则它只会读错。这就像调用 Math.Sin()、Math.GetSin(),或者调用 Random.Next()、Random.GetNext() 等等。
【解决方案2】:

这看起来确实应该是一种方法。

你正在做一些初始化,gbHTF.Controls 的大小是无限的,所以这个可能最终会很昂贵。

它还隐藏在一个实际上并没有描述你在做什么的属性名称后面——这作为一种描述性方法会更好。

【讨论】:

    【解决方案3】:

    将其转换为方法。那里有处理和业务逻辑。

    通常,我会将属性限制为其他属性的格式或组合,这样您就可以清楚地分离关注点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2018-11-16
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      相关资源
      最近更新 更多