假设您有一个具有300个属性且没有后备变量的类,每个属性都返回一个十进制/双精度.
例:
public decimal MathValue { get; set; }
Run Code Online (Sandbox Code Playgroud)
现在你决定将这些值中的每一个都舍入.
我正在寻找最简单的重构方法,而不必重写所有这些属性.
这个实际上有效的东西:D:
public decimal MathValue { get {return Math.Round(MathValue);} set; }
Run Code Online (Sandbox Code Playgroud)
您可以创建一个假装为小数的新值类型,但返回舍入值.像这样的东西:
struct RoundedDecimal
{
public decimal Value { get; private set; }
public RoundedDecimal(decimal value) : this()
{
this.Value = value;
}
public static implicit operator decimal(RoundedDecimal d)
{
return Math.Round(d.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
类中的每个属性都应该是类型RoundedDecimal而不是decimal.
重构代码的最简单方法?这是我会做的:
现在,您需要定义一组相应的私有变量,这些变量以下划线开头,但在其他方面与属性具有相同的名称。从您的类中的属性的新副本开始,并执行与上述类似的一组步骤。
我的假设是每行以 2 个选项卡开头,并且属性之间没有空行。
与其让每个属性都调用 Math.Round,不如考虑定义自己的效用函数,它们都调用该函数,这样如果需要再次更改它,只需在一处更改即可。