用干净的代码和最佳实践替换 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
检索相应的名称。第二个参数是回退,以确保如果查找失败,我们将使用当前值。
这是一个简单的代码,我正在寻找的是学习在尝试将 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
检索相应的名称。第二个参数是回退,以确保如果查找失败,我们将使用当前值。