Я не люблю else, когда обе ветки содержат return. Всегда можно написать код без этого придатка для if. Такой код будет компактнее, проще читаться и лучше выглядеть. Так зачем же многие пишут этот никчёмный else?
Делая ревью кода одного из коллег, я указал на то, что его код можно упростить, убрав else. Ответом была ссылка на 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.