2010-06-21 6 views

답변

12

Groovy 컴파일러는 물론 구문 오류를 찾을 수 있지만 Java와 같은 형식 오류는 거의 없습니다. 선언되지 않은 변수를 사용하더라도 컴파일을 통과하는 경우가 많습니다.

유형을 선언하면 수행되는 검사의 양은 증가하지만 많지는 않습니다.

이것은 Groovy가 컴파일러가 알 수없는 강력한 메타 프로그래밍 기능을 가진 동적 언어이기 때문입니다. 런타임에 다른 코드에 의해 변경 될 수 있기 때문에 주어진 객체가 컴파일 할 때 어떤 메소드 나 필드를 가질 것인가?

그러나 IDE 플러그인은 클래스 선언에없는 오류로 선언 된 유형의 변수 멤버를 표시하여 절충을 제공합니다. 그런 다음 개발자는이 멤버가 런타임에 표시 될지 또는 오타를 만들었는지 여부를 결정할 수 있습니다. 또한 알려진 클래스 멤버가 자동 완성에 나타납니다.

1

그것은 컴파일시 검사로 거의 반대되는 동적 타이핑 프로그래밍 언어로 설계되었다

번호.

단위 테스트를 더 추가해야합니다.

+0

제가 생각하기에는 많은 컴파일 타임 검사가 필요하지 않으므로 코드가 정확한지 확인하기 위해 더 많은 테스트를 작성해야 할 수도 있습니다. – Paul

+0

정확합니다. 추가 보너스로 바보 같은 유형 오류 이상을 포착합니다! – omnisis

14

그루비 2.0 이후로는 컴파일 타임에 유형을 확인 할 수 있습니다. 주석은 클래스 또는 메서드에서 사용할 수 있습니다 : @TypeChecked 또는 @CompileStatic. 첫번째 컴파일러는 컴파일하는 동안 타입 검사를하도록 지시하고, 두 번째 컴파일러는 네이티브 JAVA 컴파일러에서와 같이 바이너리 코드로 결과를 얻는 '정적 컴파일'을 수행하도록합니다. 물론, 두 번째 주석의 사용은 자체적으로 유형 검사를 포함합니다.

Grails 2.2는 Groovy 2.0을 사용하는 첫 번째 릴리스입니다.

1

그루비 2.0 @CompileStatic을 가지고 있으며, 당신은 topr 말했듯이 http://java.dzone.com/articles/groovy-20-performance-compared

...이 기능은 버전까지 Grails의에서 사용 가능한 것 그루비 2.0과 자바 사이에이 좋은 성능 테스트를 확인할 수 있습니다 @TypeChecked 2.2

0

당신 Groovy를 스크립트 구문과 함께 사용하면 유닛 테스트를 작성할 수 없습니다. 그것은 쉘 스크립트에 대한 단위 테스트를 작성하는 것과 같습니다. 여전히 Sustem.out.println()은 말도 안된다는 말은하지 않습니다. 이 오류를 잡으려면 컴파일러 옵션을 사용할 수 있어야합니다. 모든 스크립트가 메타 프로그래밍 및 DSL 코드를 포함하는 것은 아닙니다.

관련 문제