【问题标题】:Is creating a function to do a small repeated task an anti-pattern?创建一个函数来执行一个小的重复任务是一种反模式吗?
【发布时间】:2020-04-15 19:44:03
【问题描述】:

我正在努力学习编程的最佳实践,并希望使我的代码尽可能干净,但也可维护。例如,我正在运行一个等待创建每个元素的程序。

a.waitForElementToAppear(50000);
b.waitForElementToAppear(50000);
c.waitForElementToAppear(50000);

现在,我添加了一个功能,这样我就可以轻松更改50000,而无需手动编辑每个:

function waitForElement(element) {
    element.waitForElementToAppear(5000);
}

并将上面的代码更改为:

waitForElement(a);
waitForElement(b);
waitForElement(c);

创建一个新函数来调用一个相对较小的任务是一种反模式吗?有更好的方法吗?

【问题讨论】:

    标签: javascript typescript function design-patterns anti-patterns


    【解决方案1】:

    创建一个新函数来调用一个相对较小的任务是一种反模式吗?

    不,绝对没问题!虽然你是对的,你的函数是如此之小以至于它几乎没有任何收获。

    有更好的方法吗?

    为了实现轻松更改共享参数值的目标,您可以或者(不一定“更好”)也将其放入变量中:

    const time = 50000;
    a.waitForElementToAppear(time);
    b.waitForElementToAppear(time);
    c.waitForElementToAppear(time);
    

    最后但同样重要的是,该代码仍然有点重复。另一种选择是循环(尽管这三个项目只是合理循环的阈值):

    for (const element of [a, b, c]) {
        element.waitForElementToAppear(5000);
    }
    

    【讨论】:

    • 您还可以为waitForElementToAppear 设置一个默认值,这样您就不必在所有情况下都输入时间。
    • 要添加到@Jacob,您需要为带有等号的function myFunction(time = 5000) 声明参数的默认值
    • 你能不能不要waitForElements([a, b, c], 50000)?或者默认添加waitForElements([a, b, c])
    • @Paul 这和我上次的 sn-p 完全一样,只是你把它放在一个函数中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2021-04-27
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多