用干净的代码和最佳实践替换 if 语句

replace if statments with clean code and best practices

这是一个简单的代码,我正在寻找的是学习在尝试将 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}'

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

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

您可以用字典模拟 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 检索相应的名称。第二个参数是回退,以确保如果查找失败,我们将使用当前值。