我需要更新一个类。它有一个布尔例如IsTypeA。将(使用很多)布尔转换为多个状态值
系统中目前有两个条件,即1. IsTypeA或2.不是IsTypeA。
这是在标准条件下的很多地方引用的,如果(IsTypeA)做X else做Y.它也用于集成和外部数据,所以我不允许改变它。我只能加入课堂。
我们现在有一个新的条件,所以IsTypeA需要有3个状态。
有另一个布尔值(比如说IsTypeB)看起来很诡异,它胜过了IsTypeA布尔值。如果TypeC的另一种类型发挥作用,它也将使代码难以遵循和垃圾。
请处理这种情况的最佳做法是什么?
我正在考虑执行以下操作:
[Obsolete("Please refer to property 'MyType' for new usage", false)]
public bool IsTypeA
{
get { return _isTypeA; }
set
{
_isTypeA = value;
if (value == true)
MyType = EnumMyType.TypeA;
}
}
private EnumMyType _myType;
public EnumMyType MyType
{
get { return _myType; }
set { _myType = value; }
}
(我以前用Google搜索找到this question,这是类似的,但在该实例的开发正在更新全班我只需要更新一个属性。在课堂上)。
这似乎是合理的。你有什么担忧?一次可以争辩说,“TypeA”和“TypeB”应该是子类,所以多态可以处理所有事情,但这可能太过剧烈。 – BradleyDotNET 2014-09-12 16:42:27
我将摆脱_isTypeA,而只是获取/设置'IsTypeA'属性完全在'MyType'的当前值上。 – crashmstr 2014-09-12 16:45:17
我个人只是使用枚举。 – TyCobb 2014-09-12 16:46:41