【发布时间】:2016-07-24 07:04:57
【问题描述】:
我有两个枚举:level 有 3 个值,criticality 有 4 个值。这两个映射的组合是来自priority 枚举的 8 个值之一。映射是非线性的,将来可能会发生变化。
实现获取级别和关键性并输出优先级的静态函数的最佳*方法是什么?
*最佳易于阅读和理解,易于更改且安全可靠,而且不会影响性能。考虑到输入域将来可能发生变化的解决方案的额外积分。
目前我考虑的方式:
嵌套开关..case。许多行和大量样板代码。如果您忘记在案例中返回值,也容易出错。 基本上代码如下所示:
switch (bc) {
case C1:
switch (el) {
case E1:
return EmergencyPriority.P1;
case E2:
return EmergencyPriority.P2;
case E3:
return EmergencyPriority.P3;
}
case C2:
switch (el) {
case E1:
return EmergencyPriority.P2;
case E2:
return EmergencyPriority.P3;
case E3:
return EmergencyPriority.P4;
}
case C3:
switch (el) {
case E1:
return EmergencyPriority.P4;
case E2:
return EmergencyPriority.P5;
case E3:
return EmergencyPriority.P6;
}
case C4:
switch (el) {
case E1:
return EmergencyPriority.P6;
case E2:
return EmergencyPriority.P7;
case E3:
return EmergencyPriority.P8;
}
}
Mutikey Map 需要一个外部库,我还没有找到一种方法来很好地插入初始值,而无需许多函数调用和样板复合键。
if..else if..else 与 switch case 基本相同,但具有更多样板代码。不过不太容易出错。
二维数组当使用枚举值作为数组索引的整数时,如果位置枚举值发生变化,您可能会默默地失败。
您的解决方案在这里
【问题讨论】: