Шаг 129.
Задачи ComputerScience на Python.
Приложение 2. Коротко об аннотациях типов. Каковы недостатки аннотаций типов

    На этом шаге мы поговорим о недостатках аннотаций типов.

    У использования аннотаций типов существует три потенциальных недостатка:

    Написание кода с аннотациями типов занимает больше времени по двум причинам: просто требуется вводить больше символов (буквально нажимать больше клавиш) и внимательнее задумываться о коде, который вы пишете.

    Размышления о коде - это почти всегда хорошо, но дополнительные размышления замедляют работу. Тем не менее мы надеемся, что потерянное время окупится за счет обнаружения ошибок еще до запуска программы с помощью средства проверки типов. Время, потраченное на отладку ошибок, которые могут быть обнаружены средством проверки типов, наверняка больше, чем время, затрачиваемое на обдумывание типов при компоновке любой сложной кодовой базы.

    Некоторые считают, что код на Python с аннотациями типов не так удобен для чтения, как код на Python без них. Вероятно, на то есть две причины: незнание и многословие. Любой синтаксис, с которым вы не знакомы, будет менее читабельным, чем знакомый. Аннотации типов действительно изменяют внешний вид программ на Python, так что он поначалу выглядит непривычно. Чтобы этого избежать, достаточно написать и прочитать больше кода Python с аннотациями типов. Вторая проблема - многословие - более фундаментальна. Python известен своим лаконичным синтаксисом. Часто программа на Python выглядит значительно короче, чем ее эквивалент на другом языке. Код на Python с аннотациями типов менее компактен. Его нельзя столь же быстро просмотреть навскидку: там просто намного больше информации. Компромисс заключается в том, что после первого прочтения код станет более понятным, даже если чтение занимает больше времени. Благодаря аннотациям типов вы сразу видите все ожидаемые типы и можете разобраться в них, не просматривая весь код и не читая документацию.

    Наконец, аннотации типов продолжают совершенствоваться. Они определенно улучшились с тех пор, как впервые появились в Python 3.5, но все же до сих пор существуют пограничные случаи, когда аннотации типов не работают должным образом. Тип Protocol, который обычно является важной частью системы типов, все еще не включен в модуль типизации стандартной библиотеки Python, поэтому в 20 шаге пришлось подключить сторонний модуль typing_extensions. Планируется включить тип Protocol в будущую версию официальной стандартной библиотеки Python, но то, что он пока туда не входит, свидетельствует: аннотации типов в Python все еще находятся на раннем этапе развития.

    Поскольку аннотации типов в Python необязательны, на данном этапе их можно просто игнорировать в тех областях, где они неудобны. Тем не менее даже такое половинчатое использование аннотаций типов способно принести некоторую выгоду.

    На следующем шаге мы приведем источники дополнительной информации.




Предыдущий шаг Содержание Следующий шаг