При создании функции всегда нужно проверять, возвращает ли функция значения того типа, который ожидается. Если нет, нужно ввести дополнительное условие и сгенерировать исключения, а иначе тип возвращаемого значения придется проверять явно каждый раз перед его использованием.
Нужно избегать написания такого кода, потому что это приводит приводит к путанице и увеличивает сложность. Рассмотрим примеры.
Анти-паттерн: Возвращение инвариантных типов переменных.
В приведенном ниже примере, функция get_error_message () возвращает сообщения об ошибках, соответствующие коду ошибки. Но в случае несуществующего кода ошибки, она возвращает None. Это приводит к неоднозначному коду, с которым сложно работать, ведь в этом случае каждый раз необходимо дополнительно явно проверять код ошибки.
Решение: Сгенерировать исключение для неизвестных значений.
Идеальный подход для обработки неожиданных условий заключается в использовании блока try-except и генерировании соответствующего исключения. Он также подходит когда функция не будет возвращать ничего. Таким образом, вместо того, чтобы возвращать неправильное или неизвестное значение, генерируется исключение.
Код, приведенный ниже, является обновленной версией приведенного выше примера. Теперь он намного чище и не требует проверки дополнительного типа данных.