简体   繁体   English

JavaScript函数重构问题

[英]Javascript function refactoring questions

I'm relatively new to Javascript, and was just writing some simple qunit tests. 我是Java的新手,只是编写了一些简单的qunit测试。 There is a lot of DRY opportunity here, so I was wondering how a JS pro would refactor this: 这里有很多DRY机会,所以我想知道JS pro如何重构它:

test("Add time to date (in seconds)", function () {
    var d = new Date(),
        dPlus = new Date(d.getTime())
    dPlus.addSeconds(1)
    ok(d.getTime() + 1000 === dPlus.getTime(), "Passed!")
})

test("Subtract from date (in seconds)", function () {
    var d = new Date(),
        dMinus = new Date(d.getTime())
    dMinus.addSeconds(-1)
    ok(d.getTime() - 1000 === dMinus.getTime(), "Passed!")
})

test("Add 0 to date (in seconds)", function () {
    var d = new Date(),
        dMinus = new Date(d.getTime())
    dMinus.addSeconds(0)
    ok(d.getTime() === dMinus.getTime(), "Passed!")
})

test("Add time to date (in minutes)", function () {
    var d = new Date(),
        dPlus = new Date(d.getTime())
    dPlus.addMinutes(1)
    ok(d.getTime() + (60 * 1000) === dPlus.getTime(), "Passed!")
})

test("Subtract from date (in minutes)", function () {
    var d = new Date(),
        dMinus = new Date(d.getTime())
    dMinus.addMinutes(-1)
    ok(d.getTime() - (60 * 1000) === dMinus.getTime(), "Passed!")
})

test("Add 0 to date (in minutes)", function () {
    var d = new Date(),
        dMinus = new Date(d.getTime())
    dMinus.addMinutes(0)
    ok(d.getTime() === dMinus.getTime(), "Passed!")
})

I suspect I could write a function that takes one parameters for the qty of time units, the function (addSeconds, addMinutes), and either the expected offset or a function to calculate it, just not sure what the idiomatic way to write it would be. 我怀疑我可以编写一个函数,该函数以一个数量的时间单位作为参数,该函数(addSeconds,addMinutes),以及期望的偏移量或用于计算它的函数,只是不确定该写的惯用方式是什么。

function testUnits(func, amount, offset) {
    var d = new Date(),
        dMinus = new Date(d.getTime());
    dMinus[func](amount);
    ok(d.getTime() + offset === dMinus.getTime(), "Passed!");
}

test("Subtract from date (in minutes)", function () {
    testUnits('addMinutes', -1, -60000);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM