Кто сказал «кря»?
❓
Кто сказал «кря»?
В программировании часто важно, чтобы объекты относились к совместимым типам, например, наследовали один класс или реализовывали один интерфейс.
А что, если нам не так важно, что это за объект, главное – чтобы он умел делать то, что от него нужно? Это и есть идея
утиной типизации (Duck typing)
.
🪿
Утиная типизация
– это подход, при котором тип объекта не проверяется явно. Если у него есть нужные методы и свойства – его можно использовать.
🪿
То есть, если нам нужно, чтобы объект умел плавать и крякать, мы просто вызываем методы
swim()
и
quack()
. Если объект крякает – для нас он утка.
Ну а почему типизация именно
утиная
? Термин пошёл от английского выражения «утиный тест» (duck test). Его суть хорошо передаёт известная фраза:
«Если что-то выглядит как утка, плавает как утка и крякает как утка, то это, скорее всего, утка»
.
💛
В программировании логика примерно такая же. Не обязательно выяснять, что за объект перед нами, если он умеет делать то, что от него требуется – с ним можно работать.
Утиная типизация особенно характерна для языков с динамической типизацией:
Python, JavaScript, Ruby, PHP
.
Почему её используют?
➕
код получается гибче и универсальнее
➕
меньше лишних зависимостей и проверок типов
➕
хорошо подходит для прототипирования и скриптов
А в чём подвох?
➖
часть ошибок может обнаружиться только во время выполнения
➖
не всегда очевидно, что именно должен уметь объект
➖
в большом проекте такие неявные зависимости бывает сложнее поддерживать
Утиная типизация даёт свободу, но требует внимательности. Главное – не то, кем объект себя называет, а то, что он умеет.
Хотя иногда всё-таки стоит проверить, точно ли перед вами утка. Как говорится, доверяй, но проверяй
😈
#ЛАНИТ_учит
🍀
ЛАНИТ ищет в
ВК
и в
МАХ
Откликнуться в Telegram →
⚠️ Никогда не платите «за оформление» или «гарантию трудоустройства» — это признак мошенников. Работа ТРУ не несёт ответственности за содержание вакансии.