Будет ли Groovy (Grails) дать вам время компиляции, как Java? - PullRequest
10 голосов
/ 21 июня 2010

Будет ли Groovy (Grails) давать вам время компиляции, как Java?

Если вы всегда указываете тип, это сильно изменит?

Ответы [ 6 ]

15 голосов
/ 07 августа 2012

Начиная с Groovy 2.0, можно проверять типы во время компиляции.Аннотации можно использовать для класса или метода: @TypeChecked или @CompileStatic.Первый указывает компилятору выполнять проверку типов во время компиляции, а второй заставляет его выполнять «статическую компиляцию», что более или менее приводит к двоичному коду, как из собственного компилятора JAVA.Конечно, использование 2-й аннотации включает в себя саму проверку типов.

Grails 2.2 - первый выпуск, использующий Groovy 2.0.

13 голосов
/ 21 июня 2010

Компилятор Groovy, конечно, найдет синтаксические ошибки, но почти нет ошибок типа, как в Java. Даже использование необъявленных переменных часто проходит компиляцию.

Объявление типов увеличит объем проверок, но не намного.

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

Однако плагины IDE предлагают компромисс, помечая члены переменных объявленным типом, которых нет в объявлении класса, как возможные ошибки. Затем разработчик может решить, будет ли этот участник присутствовать во время выполнения, или он только что сделал опечатку. Кроме того, в автозаполнении появляются известные ученики.

2 голосов
/ 21 января 2012
1 голос
/ 31 августа 2012

Groovy 2.0 имеет @CompileStatic и @TypeChecked. Вы можете проверить этот хороший тест производительности между Groovy 2.0 и Java http://java.dzone.com/articles/groovy-20-performance-compared

Как сказал topr ... эта функция будет доступна в Grails до версии 2.2

1 голос
/ 22 июня 2010

номер

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

Вам придется добавить больше юнит-тестов.

0 голосов
/ 18 августа 2017

Вы не можете писать модульные тесты, если используете Groovy с синтаксисом скрипта.Это похоже на написание модульных тестов для сценариев оболочки.Тем не менее, у вас есть доступная компиляция, она просто не говорит вам, что Sustem.out.println () - чепуха.Опция компилятора должна быть доступна, чтобы перехватить эти ошибки.Не каждый скрипт содержит метапрограммирование и код DSL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...