这是我为随机类使用包装器扩展的代码。
public static class RandomHelper
{
private static int currentSeed;
private static Random rd = new Random();
public static double Next()
{
return rd.NextDouble();
}
public static double Next(double min, double max)
{
return (rd.NextDouble() * (max - min)) + min;
}
public static double NextOnStep(double min, double max, double step)
{
int range = (int)Math.Floor((max - min) / step);
int stepCount = rd.Next(0, range);
return min + (step * stepCount);
}
public static double NextOnDecimalCount(double min, double max, int decimals)
{
double step = Math.Pow(10, decimals);
return Math.Truncate(((rd.NextDouble() * (max - min)) + min) * step) / step;
}
想象一下这种情况,我有一个包含三个数字范围的类
public class ArithmeticProblemGenerator()
{
Range Number1Range {get;set;}
Range Number2Range {get;set;}
...
Range Number5Range {get;set;}
}
public class Range
{
public Range()
{
}
public Range(double min, double max)
{
this.Min = min;
this.Max = max;
}
public double Min { get; set; }
public double Max { get; set; }
}
当我想产生问题时,我在我的 RandomHelper 中添加另一个方法作为扩展。
#region RandomHelper extensions
public static double Next(Range range)
{
return Next(range.Min, range.Max);
}
public static double NextOnStep(Range range, double step)
{
return NextOnStep(range.Min, range.Max, step);
}
public static double NextOnDecimalCount(Range range, int decimals)
{
return NextOnDecimalCount(range.Min, range.Max, decimals);
}
#endregion
但后来我添加了我的 ArithmeticProblemGenerator 的一个新功能,我想要具有不同小数位的数字,或者有时数字跟随一个步骤。
所以,我想,创建另外两个类来添加以下功能会很好。
public class RangeOnStep : Range
{
public RangeOnStep()
{
}
public RangeOnStep(double min, double max, double step)
: base(min, max)
{
this.Step = step;
}
public double Step { get; set; }
}
public class RangeOnDecimalPlace : Range
{
public RangeOnDecimalPlace()
{
}
public RangeOnDecimalPlace(double min, double max, double decimalPlaces)
: base(min, max)
{
this.DecimalPlaces = decimalPlaces;
}
public double DecimalPlaces { get; set; }
}
并使用这些新类添加另一个方法扩展。你认为我的工作做得很好还是设计一团糟?
我想听听建议或意见。提前致谢。