我应该把这个getter转换成方法吗
本文关键字:方法 转换 getter 我应该 | 更新日期: 2023-09-27 18:02:50
在过去的几天里,我一直在阅读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;
}
}
Properties
&Field
一般为 Noun
和methods
,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;
}
这看起来确实应该是一个方法。
你正在做一些初始化,gbHTF.Controls
的大小是无限的,所以这个可能会最终是昂贵的。
它也隐藏在一个属性名后面,这个属性名实际上并没有描述你在做什么——这将是一个更好的描述性方法。
将其转换为方法。这里有处理和业务逻辑。
一般来说,我会将属性限制为格式化或组合其他属性,这样您就可以清楚地分离关注点。