Каковы некоторые преимущества утиной типизации по сравнению со статической? - PullRequest
26 голосов
/ 07 сентября 2008

Я исследую и экспериментирую больше с Groovy и пытаюсь сосредоточиться на плюсах и минусах реализации вещей в Groovy, которые я не могу / не могу сделать в Java. Динамическое программирование для меня все еще является концепцией, так как я был глубоко погружен в статические и строго типизированные языки.

Groovy дает мне возможность тип утки , но я не вижу значения. Как типизация утки более продуктивна, чем статическая? Какие вещи я могу сделать в своей практике кода, чтобы помочь мне понять ее преимущества?

Я задаю этот вопрос, имея в виду Groovy, но понимаю, что это не обязательно вопрос Groovy, поэтому я приветствую ответы из каждого кодового лагеря.

Ответы [ 12 ]

1 голос
/ 07 сентября 2008

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

0 голосов
/ 18 апреля 2018

Для меня они не сильно отличаются, если вы видите динамически типизированные языки как просто форму статической типизации, где все наследуется от достаточно абстрактного базового класса.

Проблемы возникают, когда, как отмечали многие, вам становится странно с этим. Кто-то указал на функцию, которая возвращает один объект, коллекцию или ноль. Пусть функция возвращает определенный тип, а не множественный. Используйте несколько функций для одной коллекции против.

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

...