我找不到在类中编写一些计算的良好性能和易读性的方法。想象一下以下类和所有获取 FinalPrice 的方法:
public class Order {
public Order(Product[] products) {
Items = products;
选项 1:为每个要计算的属性声明一个变量,易读性差
var orderPrice = products.Sum(p => p.Price * p.Quantity);
var orderTaxes = products.Sum(p => p.Taxes * p.Quantity);
var orderDiscount = products.Sum(p => p.Price * p.Quantity * p.Discount);
OrderPrice = orderPrice;
OrderTaxes = orderTaxes;
OrderDiscount = orderDiscount;
FinalPrice = orderPrice + orderTaxes - orderDiscount;
选项2:课堂顺序问题很重要!FinalPrice 行不能在其他行之前,否则它将不起作用但不会引发错误。
OrderPrice = products.Sum(p => p.Price * p.Quantity);
OrderTaxes = products.Sum(p => p.Taxes * p.Quantity);
OrderDiscount = products.Sum(p=> p.Price * p.Quantity * p.Discount);
FinalPrice = OrderPrice + OrderTaxes - OrderDiscount;
选项 3:重写所有公式 - 不利于维护。最有可能在以后引入价格差异。
FinalPrice = products.Sum(p => p.Price * p.Quantity) +
products.Sum(p => p.Taxes * p.Quantity) -
products.Sum(p => p.Price * p.Quantity * p.Discount);
}
选项 4:使用吸气剂。这将在每次调用时计算。这是一个简单的计算,但假设更多的代码。
public decimal FinalPrice { get {
return OrderPrice + OrderTaxes - OrderDiscount;
} }
}
选项 5:使用函数。这是好事还是坏事??
public decimal CalculateFinalPrice() {
return OrderPrice + OrderTaxes - OrderDiscount;
}