【发布时间】:2016-08-11 10:54:57
【问题描述】:
我正在做一个课程来帮助我在单位之间进行转换,我需要询问创建这项工作的最佳方法。
这是我关于温度的示例代码:
public class Temperature
{
private double _Celsius = 0;
public double Celsius
{
get { return _Celsius; }
set
{
_Fahrenheit = (value * 9 / 5) + 32;
_Kelvin = value + 273.15;
}
}
private double _Fahrenheit = 0;
public double Fahrenheit
{
get { return _Fahrenheit; }
set
{
_Celsius = (value - 32) * 5/9;
_Kelvin = _Celsius + 273.15;
}
}
private double _Kelvin = 0;
public double Kelvin
{
get { return _Kelvin; }
set
{
_Celsius = value - 273.15;
_Fahrenheit = (_Celsius * 9 / 5) + 32;
}
}
}
我希望知道这门课是否还有其他好的?
【问题讨论】:
-
“好人”是什么意思?
-
在设置方法中,您没有设置正在设置的实际类型。例如,在摄氏设置器中,您设置了 _Farenheit 和 _Kelvin,但没有设置 _Celsius。
-
您应该只存储一个值(即摄氏度)并直接在访问器中计算其他值。这可以防止对象的状态变得不一致。
-
您的示例不是转换器类,而是包含物理单位(在本例中为温度)的类型。根据您的需要,您应该使用(无状态)转换类。
标签: c# .net oop temperature