#python
#python
Вопрос:
Недавно у меня возникла проблема, когда коллега внес изменения в подпись для возврата функции, у нас есть клиенты, которые вызывают функцию таким образом:
example = function()
Но затем, когда я зависел от его изменений, он непреднамеренно изменился на это:
example, other_stuff = function()
Я не знал об этом изменении, я выполнил слияние, и все вроде бы в порядке, но затем произошла ошибка, поскольку я ожидал одно значение, но теперь оно пыталось распаковать два
Итак, мой вопрос заключается в том, что python не является типизированным языком, есть ли способ узнать, что это происходит, и предотвратить такое поведение (инструмент или что-то в этом роде), потому что, к сожалению, это было до тех пор, пока не возникла ошибка во время выполнения, когда я это заметил, или как нам нужно было справиться с этим
Комментарии:
1. Вы можете выполнить статическую проверку типов с помощью MyPy и / или написать несколько реальных тестов.
Ответ №1:
Звучит как ошибка процесса. API не должен изменять свою подпись без учета своих пользователей. Внутри проекта это просто, просто найдите. Внешне номер версии API должен быть изменен, и изменение должно быть указано в примечаниях к изменениям.
API должен иметь модульные тесты, которые включают тесты возвращаемого значения. все проблемы «он непреднамеренно изменил» должны быть обнаружены там. Поскольку этого не произошло, следует написать отчет об ошибке по тестам.
Конечно, сотрудник мог просто изменить эти тесты. Но все это должно быть в наборе изменений для проверки кода в вашем исходном репозитории. Сотрудник должен обосновать изменение и способы устранения поломок. Поскольку у этого API, по-видимому, есть внешние клиенты, получить изменение подписи API должно быть очень сложно, поскольку все клиенты должны быть уведомлены.