【发布时间】:2018-02-22 03:49:01
【问题描述】:
我正在编写一个简单的应用程序,它会考虑风险发生的可能性及其结果的严重性,并将其转化为基于风险矩阵的风险严重程度评级。
我目前的解决方案是将可能性和后果转换为 1-5,将它们相乘,然后在一堆 if/else 语句中使用结果来获得风险评级。我的问题是范围重叠,我必须单独处理这些情况,我觉得这有点逃避。
var likelihoods = {
"Rare" : 1,
"Unlikely" : 2,
"Possible" : 3,
"Likely" : 4,
"Almost Certain" : 5,
};
var consequences = {
"Minor" : 1,
"Moderate" : 2,
"Major" : 3,
"Severe" : 4,
"Extreme" : 5,
};
var likelihood = likelihoods[item.likelihood];
var consequence = consequences[item.consequence];
var riskVal= likelihood * consequence;
if (likelihood == 2 && consequence == 2) { riskRating = 1 }
else if (likelihood == 1 && consequence == 5) { riskRating = 3 }
else if (likelihood == 2 && consequence == 5) { riskRating = 4 }
else if (riskVal <= 3) { riskRating = 1 } //Low risk
else if (riskVal <= 6) { riskRating = 2 } //Medium risk
else if (riskVal <= 12) { riskRating = 3 } //High risk
else { riskRating = 4 } //Critical risk
有什么更清洁的方法来做到这一点?
【问题讨论】:
-
我将使用硬编码的 5x5 二维数组。但它不能很好地扩展
-
@BryanChen 如果它不能扩展,你仍然可以根据你拥有的任何规则动态创建它,而不是硬编码它
标签: javascript maintainability