重构建议

时间:2018-07-02 09:34:57

标签: python

我分配了一个重构功能。我似乎不知道我还能在这里做什么,也许将一些变量提取到函数中?

def score(game):
    result = 0
    frame = 1
    in_first_half = True
    for i in range(len(game)):
        if game[i] == '/':
            result += 10 - last
        else:
            result += get_value(game[i])
        if frame < 10  and get_value(game[i]) == 10:
            if game[i] == '/':
                result += get_value(game[i+1])
            elif game[i] == 'X' or game[i] == 'x':
                result += get_value(game[i+1])
                if game[i+2] == '/':
                    result += 10 - get_value(game[i+1])
                else:
                    result += get_value(game[i+2])
        last = get_value(game[i])
        if not in_first_half:
            frame += 1
        if in_first_half is True:
            in_first_half = False
        else:
            in_first_half = True
        if game[i] == 'X' or game[i] == 'x':
            in_first_half = True
            frame += 1
    return result

1 个答案:

答案 0 :(得分:1)

通常,类似这样的问题(关于可能需要改进的工作代码)更适合CodeReview

但是也有一些错误/疣:

  1. 请勿使用is进行相等性测试。 ==测试对象身份,尽管对于像is这样的简单对象,它可以按预期工作,但不能保证在所有实现中都可以这样做。
  2. 更改以下内容:

True

if in_first_half is True:
    in_first_half = False
else:
    in_first_half = True
  1. 这也不是错误,而是丑陋的:

in_first_half = not in_first_half

应该是

if game[i] == 'X' or game[i] == 'x':

if game[i] in 'Xx':