我的程式有單元測驗,我必須讓它們都成功
這是我的單元測驗之一
double x = 5;
double y = 10;
double radius = 20;
Circle target = new Circle(x, y, radius);
Assert.AreEqual(40 * Math.PI, target.Circumference, 0.01, "Circumference is false");
target.Radius = 0;
Assert.AreEqual(0, target.Circumference, 0.01, "Circumference is at a radius of 0 0");
target.Radius = -10;
Assert.AreEqual(0, target.Circumference, 0.01, "Circumference is at a negativ radius null");
第一次測驗成功,但下一次失敗。我的問題是當只有半徑改變時如何改變 Circumfernece?
這是我的 Circle 課程
public class Circle
{
public double X { get; set; }
public double Y { get; set; }
public double Radius { get; set; }
public double Circumference{ get;}
public Circle(double x, double y, double radius)
{
X = x;
Y = y;
if (radius < 0)
{
Radius = 0;
Circumference = 0;
}
else
{
Radius = radius;
Circumference = radius * 2 * Math.PI;
}
}
//...
}
uj5u.com熱心網友回復:
將所有邏輯和驗證從建構式移動到屬性要好得多。
這樣你的代碼不會被破壞,如果有人Radius直接分配或更改。
嘗試這個
public class Circle
{
private double _radius;
public double X { get; set; }
public double Y { get; set; }
public double Radius
{
get {return _radius;}
set
{
if (value <= 0) _radius = 0;
else _radius=value;
}
}
public double Circumference
{
get { return _radius * 2 * Math.PI };
}
public Circle(double x, double y, double radius)
{
X = x;
Y = y;
Radius = radius;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/328590.html
