Пожалуйста, не используйте else
Опубликовано 29 January 2019 в Python
Я не люблю else
, когда обе ветки содержат return. Всегда можно написать код без этого придатка для if
. Такой код будет компактнее, проще читаться и лучше выглядеть. Так зачем же многие пишут это никчемный else
?
Делая ревью на код одного из коллег, я указал на то, что его код можно упростить, убрав esle
. Ответом была ссылка на PEP8, где такое поведение определяется допустимым. Код был примерно таким:
def get_magic_number(use_magic):
if use_magic:
return calculate_with_magic()
else:
return calculate_with_science()
С точки зрения работоспособности, этому коду нечего предъявить. Меня, как читателя, такой код заставляется остановиться и задуматься.
- Что возвращает эта функция?
- Всегда я выхожу из любой ветки?
Даже на таких коротких функциях я останавливаюсь и думаю, все ли с ними хорошо. А ведь такими короткими обе ветки бывают не всегда.
У меня всегда возникает вопрос, почему нельзя отказаться от else
? Плюсы, мне кажется, очевидны:
- Избавимся от одной ненужной строки.
- Уберем один отступ для одной из веток.
- Получим дефолтный return для функции.
def get_magic_number(use_magic):
if use_magic:
return calculate_with_magic()
return calculate_with_science()
Будет читаться код лучше? Да. Будет какая-нибудь разница для интерпретатора? Нет. Зачем тогда использовать бессмысленную конструкцию там, где она ненужна? PEP8, как и “потом может понадобиться” не являются весомыми аргументами в пользу else
.
Что думаете? Это все вкусовщина или мои претензии обоснованы?
Возник вопрос? Мне всегда можно написать в Twitter: avkorablev