用清晰的代码和最佳做法替换陈述

时间:2019-07-10 20:19:59

标签: python solid-principles

这是一个简单的代码,我要寻找的是学习在尝试将show方法重构为不适合修改的方法时可以实现的最佳实践。因此将来如果他们要求我输入具有链类型值的新卡,则无需修改此方法。

class Card:
def __init__(self, suit, value):
    self.suit = suit
    self.value = value

def show(self):
    if self.value == 1:
        value = "Ace"
    elif self.value == 11:
        value = "Jack"
    elif self.value == 12:
        value = "Queen"
    elif self.value == 13:
        value = "King"
    else:
        value = self.value

    return f'{value} of {self.suit}'

2 个答案:

答案 0 :(得分:0)

对我来说,代码看起来不错,但如果您愿意,可以使用字典:

value = {1: "Ace", 11: "Jack", 12: "Queen", 13: "King"}.get(self.value,self.value)

答案 1 :(得分:0)

您可以使用字典来模拟switch-case语句:

def show(self):
    value = {
        1: 'Ace', 11: 'Jack',
        12: 'Queen', 13: 'King'
    }.get(self.value, self.value)

    return f'{value} of {self.suit}'

这里发生的是,我们正在创建一张卡数字值到卡名称的映射。创建此对象后,我们立即使用dict.get方法尝试基于self.value检索相应的名称。第二个参数是回退,以确保如果查找失败,我们将使用当前值。