В последние несколько месяцев я делаю переход от Java к Groovy, и я могу оценить многие из преимуществ, которые он приносит: меньше кода, закрытий, сборщиков, MOP, что в конечном итоге делает рамки, подобные Grails, легкостью насмехаясь при записи тесты и т. д.У вас слишком много «динамических» в динамических языках?
Тем не менее, я был «обвинен» моими коллегами в том, что мой код недостаточно хорош. А именно, я все еще объявляю типы для своих параметров и полей, как правило, использую наследование и полиморфизм вместо утиного ввода текста и т. Д. Мне кажется, что в этих ситуациях это не только динамическая или статическая, но и динамическая или объектно-ориентированная парадигма вид дилеммы. В тех случаях я все же предпочитаю ОО. Я чувствую, что парадигма ОО имеет большую ценность в своей основной предпосылке, позволяющей абстрагироваться и связывать ваши конструкции кода с конкретными концепциями реального мира.
Итак, вот конкретные вопросы, мне нужна помощь с:
Должен ли я объявить типы для меня параметры, поля и т.д.?
Должен ли я объявить блок кода закрытым, когда будет использоваться простой способ?
Когда следует использовать утиную печать вместо полиморфной динамической отправки. Например, в groovy я могу делать животное. «Action»() или def animal; animal.action(), а не животное animal = new Dog(); animal.action(). Я вижу проблему сперва в контексте принципа Open-Closed, но любые другие причины предпочитают полиморфизм стиля OO?
Когда следует использовать интерфейсы в groovy (если когда-либо)?
Я уверен, что есть некоторые другие подобные дилеммы, которые я не смог записать. Я также считаю, что эти вопросы действительны не только для groovy, но и для любого другого динамического языка. Что вы думаете?
Еще одна причина для объявления типов - это программирование веб-сервисов SOAP, чтобы сгенерированный WSDL мог содержать некоторую информацию о типе ... – Dan