我有一个复杂的吸气剂如下
public bool IsOk
{
get
{
return (IsFirstCondition && (IsSecondCondition.Items.First.Item == MyItems.PublicItems.BestItem
|| IsThirdCondition.Collection.EditedItem.IsTheMostUsedItem);
}
}
Run Code Online (Sandbox Code Playgroud)
为了简单和更好的可读性,我想把我的getter变成这样的东西:
public bool IsOk
{
get
{
var isBestItemm = IsSecondCondition.Items.First.Item == MyItems.PublicItems.BestItem;
var isMostUsedItem = IsThirdCondition.Collection.EditedItem.IsTheMostUsedItem;
return (IsFirstCondition && (isBestItemm || isMostUsedItem);
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,getter只是为了返回数据而不是为了设置/声明/初始化东西......我的简化getter是否对最佳实践和编码指南有效?
首先,财产指南通常要求:
它们应该便宜
尽量避免代价高昂的计算或从数据库和类似的东西中获取数据.
它们应该是一致的
两次读取属性应该两次返回相同的值.
他们不应该引入副作用
读取属性会以某种方式更改基础对象.
如果你能避免这种情况,可以使用任何正常的"技巧"来重构属性getter
就你的实际例子而言,我肯定会声明这些变量.