Это несколько устарело, но я хотел бы поделиться своим опытом, если кто-то придет в поисках мыслей на эту тему:
В настоящее время мы используем eclipse 3.7 и groovy-eclipse 2.7 в небольшой команде (3 разработчика), и, поскольку у нас нет сценариев тестирования, в основном в нашей разработке на Groovy мы используем явное использование типов.
Например, при использовании методов классов обслуживания:
void validate(Product product) {
// groovy stuff
}
Box pack(List<Product> products) {
def box = new Box()
box.value = products.inject(0) { total, item ->
// some BigDecimal calculations =)
}
box
}
Обычно мы заполняем тип, который позволяет автозаполнению eclipse и, что наиболее важно, позволяет нам реорганизовывать код, находить примеры использования и т. Д.
Это блокирует нас от использования метапрограммирования, за исключением категорий, которые, как я обнаружил, поддерживаются и обнаруживаются groovy-eclipse.
Тем не менее Groovy довольно хорош, и большая часть нашей бизнес-логики представлена в отличном коде.
У нас было две проблемы в рабочем коде при использовании groovy, и оба случая были из-за плохого ручного тестирования.
У нас также есть много возможностей для создания и анализа XML, и мы проверяем его перед отправкой на веб-службы и тому подобное.
Есть небольшой скрипт, который мы используем для подключения к внутренней системе, использование которой очень ограничено (и не требуется в других частях системы). Этот код, который я разработал, использовал полностью динамическую типизацию, переопределяя методы, использующие метакласс и все такое, но это исключение.
Я думаю, что groovy 2.0 (конечно, с groovy-eclipse) и его @TypeChecked отлично подойдет для тех из нас, кто использует groovy как java ++.