Злоупотребление if-elif-else
Анти-паттерн
Если при использовании if-elif-else данных много и они похожи, то лучше использовать циклы или словари. Это уменьшит количество кода, позволит править логику сразу для всех случаев и улучшит читаемость.
Пример 1¶
Плохо:
customer_type = ...
if customer_type == "bronze":
discount = 5
elif customer_type == "silver":
discount = 10
elif customer_type == "gold":
discount = 15
elif customer_type == "platinum":
discount = 20
else:
discount = 0
Хорошо:
customer_type = ...
discounts = {
"bronze": 5,
"silver": 10,
"gold": 15,
"platinum": 20,
}
discount = discounts.get(customer_type, 0)
Пример 2¶
Плохо:
def get_month(month_number):
if month_number == 1:
return 'Январь'
elif month_number == 2:
return 'Февраль'
elif month_number == 3:
return 'Март'
...
else:
return 'Неверный номер месяца'
month_name = get_month_name(3)
Хорошо:
def get_month(month_number):
months = {
1: 'Январь',
2: 'Февраль',
3: 'Март',
...
}
return months.get(month_number, 'Неверный номер месяца')
month_name = get_month_name(3)