首页 > 解决方案 > Swift 中的 2 行重复代码是否首选单独的函数?

问题描述

我正在设计一个小游戏,并决定根据从提出问题到按下输入按钮之间经过的秒数来分配积分的初始方式。

我知道最佳实践是创建一个函数以在要重复行时调用,但在我看来,当只有两行重复四次时调用它可能有点过分。使用下面的代码,为每个部分的最后两行创建一个函数对我来说是“正确的”还是首选?

//Assigns points to score based on elapsed time and updates score
func updateScore() {

    timer.invalidate()

    if timeToAnswer < 3 {
        questionScore = 10  //10 points for answering so quickly
        score = score + questionScore  //Updates score
        timeToAnswer = 0  //Resets var timeToAnswer
    }

    else if (timeToAnswer >= 3) && (timeToAnswer < 6) {
        questionScore = 7
        score = score + questionScore
        timeToAnswer = 0
    }

    else if (timeToAnswer >= 6) && (timeToAnswer < 11) {
        questionScore = 10 - timeToAnswer
        score = score + questionScore
        timeToAnswer = 0
    }

    else {
        questionScore = 1
        score = score + questionScore
        timeToAnswer = 0
    }
}

非常感谢任何提供帮助或建议的人。

标签: swiftfunctionstandards

解决方案


你可以用更好的方式做到这一点。您也可以使用 switch 语句。反正:

func updateScore() {

    timer.invalidate()

    if timeToAnswer < 3 {
        questionScore = 10
    }

    else if (timeToAnswer >= 3) && (timeToAnswer < 6) {
        questionScore = 7
    }

    else if (timeToAnswer >= 6) && (timeToAnswer < 11) {
        questionScore = 10 - timeToAnswer
    }

    else {
        questionScore = 1
    }

    score = score + questionScore  //Updates score
    timeToAnswer = 0  //Resets var timeToAnswer
}

推荐阅读