我当前项目中的首席开发人员禁止使用任何枚举。他声称枚举只是问题。只有当我被迫时才能使用它 - 当与需要枚举的外部应用程序/库进行通信时。 他说我应该对每个州都有对象。例如,我们有对象Soldier的游戏。所以我必须有对象: - RunningSoldier - SittingSoldier - StandingSoldier
他是对的吗?我感觉不到。我只有像我不想写这么多课程的论点。
谢谢!
答案 0 :(得分:5)
对于你的情况,枚举很糟糕。因为我认为RunningSoldier将拥有与其他类型士兵不同的属性/方法。如果你有一个状态的枚举,那么在你的每个方法中你将有一个if / else / switch条件。所以你的方法会很庞大,难以维护。因此,最好使用基础Soldier类(OOP概念)来创建不同的类。
<强>更新强>
如果你需要为士兵添加另一种类型,那么添加一个类将比枚举更容易。至于枚举,你必须经历所有方法(移动,跳跃,射击等)。但是对于类的情况,很容易添加一个新类并实现这些方法。很好,很容易。
在某些其他情况下,枚举可能比单独的类更好。例如,对于CurrencyType或Units,枚举。我的代码中有一个方法,它接受两个枚举并从一个
转换值public static double ConvertUnits(this double original, SimplifiedUnits sourceUnits, SimplifiedUnits targetUnits)
{
if (sourceUnits == targetUnits || sourceUnits == SimplifiedUnits.Unknown)
return original;
if (sourceUnits == SimplifiedUnits.Feet && targetUnits == SimplifiedUnits.Meters)
return original * GeometryConstants.MetersPerFoot;
if (sourceUnits == SimplifiedUnits.Meters && targetUnits == SimplifiedUnits.Feet)
return original / GeometryConstants.MetersPerFoot;
throw new NotSupportedException();
}