Пожалуйста, не используйте else

Опубликовано 29 января 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.

Что думаете? Это все вкусовщина или мои претензии обоснованы?