最近当我走过项目源之一时,我遇到了如下声明。
public bool isRestricted => false;
任何人都可以向我介绍一下,使用这些陈述有什么好处。 提前谢谢。
答案 0 :(得分:6)
这是一个很好的表达功能,非常适合具有许多小功能的对象。例如,表示业务规则。它使这些类型的对象保持小巧,易于阅读,易于维护和理解。在我看来,如果它仅仅是语法糖并且不是真的有用是错误的 - 如果表达体是这样的话,那么语言的其他几个特征也可以被考虑,例如属性,自动属性等等。表达式主体对计算对象非常有用,请考虑以下代码:
public class PriceCalculator
{
public double Price(WomensFashionItem item)
{
return item.Cost * 1.2;
}
public double Price(MensFashionItem item)
{
return item.Cost * 1.33 + 10;
}
public double Price(ToyItem item)
{
if (item.Source == "Taiwan")
{
return item.Cost * 2.2;
}
else
{
return item.Cost * 1.5;
}
}
}
通过使用表达体,我们可以减少行数,在我看来更容易在这里显示我们的意图。
public class PriceCalculator
{
public double Price(WomensFashionItem item) => item.Cost * 1.2;
public double Price(MensFashionItem item) => item.Cost * 1.33 + 10;
public double Price(ToyItem item) => item.Source == "Taiwan" ? item.Cost * 2.2 : item.Cost * 1.5;
}
因此,从24行代码到6行,只需一目了然地查看所有业务规则就可以非常强大。我可以轻松地向域专家或业务所有者显示此代码,他们应该能够了解正在发生的事情,并且可以提供反馈。
现在表达式主体可能不如泛型类型系统那么强大,但它们肯定可以成为工具箱中用于将单行或计算属性转换为易于理解的小成员的好工具。