我怎样才能遵循 DRY 原则来应对这一挑战?[关闭]

How can I follow DRY principles with this challenge? [closed]

提问人:James Kemp 提问时间:8/11/2020 更新时间:8/11/2020 访问量:34

问:


这个问题似乎与帮助中心定义的范围内的编程无关。

3年前关闭。

我在 jshero.com 上解决了这个练习,但我知道解决方案可以写得更干净,我只是不知道怎么做。

以下是说明:

编写一个函数 addWithSurcharge,将两个金额与附加费相加。对于小于或等于 10 的金额,附加费为 1。对于大于 10 且小于或等于 20 的金额,附加费为 2。每大于 20 的金额,附加费为 3。

此质询还假设您使用 if...否则,如果...否则来解决练习,所以我主要关心的是简化性和可读性,但我也对三元感到好奇。这是我的尝试,它有效,

function addWithSurcharge(num1, num2) {
    let surcharge = 0;
    if (num1 <= 10) {
        surcharge += 1;
    } else if (num1 > 10 && num1 <= 20) {
        surcharge += 2;
    } else {
        surcharge += 3;
    }
    
    if (num2 <= 10) {
        surcharge += 1;
    } else if (num2 > 10 && num2 <= 20) {
        surcharge += 2;
    } else {
        surcharge += 3;
    }
    
    return surcharge + num1 + num2;
}

谢谢 非常感谢!

JavaScript 函数 if 语句 dry 相等

评论

1赞 Mike 'Pomax' Kamermans 8/11/2020
如果你的代码可以工作,而你只是想帮助改进它,那就 codereview.stackexchange.com - Stackoverflow 适用于事情不起作用的情况,并且你已经四处搜索并尝试自己调试东西,但你仍然卡住了。
0赞 Barmar 8/11/2020
将重复的代码放入函数中。调用将 和 作为参数传递的函数。num1num2
0赞 Barmar 8/11/2020
你不需要测试 ,因为这已经通过到达块来保证。num1 > 10else
0赞 Barmar 8/11/2020
surcharge = getSurcharge(num1) + getSurcharge(num2);
0赞 Robo Robok 8/11/2020
恭喜,另一个完全有效的问题结束了。遵循 DRY 原则被认为是基本的代码质量,因此这个问题是 SO 材料。没有人说 SO 只是为了那些不起作用的事情。

答: 暂无答案