2010-06-21 8 views

Antwort

12

Der Groovy-Compiler wird natürlich Syntaxfehler finden, aber fast keine Typfehler wie bei Java. Selbst die Verwendung von nicht deklarierten Variablen wird oft kompiliert.

Das Deklarieren von Typen erhöht die Anzahl der durchgeführten Prüfungen, aber nicht viel.

Dies ist, weil Groovy eine dynamische Sprache mit leistungsstarken Metaprogrammierungsfunktionen ist, die es dem Compiler unmöglich machen, z.B. welche Methoden oder Felder ein bestimmtes Objekt zur Kompilierzeit haben wird, da dies zur Laufzeit durch anderen Code geändert werden kann.

IDE-Plugins bieten jedoch einen Kompromiss, indem sie Member von Variablen mit einem deklarierten Typ markieren, die in der Klassendeklaration nicht als mögliche Fehler enthalten sind. Dann kann der Entwickler entscheiden, ob dieses Mitglied zur Laufzeit anwesend ist oder ob er gerade einen Tippfehler gemacht hat. Darüber hinaus werden bekannte Klassenmitglieder in Autovervollständigung angezeigt.

1

Nr

Es wurde entwickelt, eine dynamische Typisierung Programmiersprachen zu sein, die so ziemlich das Gegenteil ist als die Kompilierung zu überprüfen.

Sie müssen stattdessen mehr Komponententests hinzufügen.

+0

Ich denke, das ist der Punkt - Sie haben nicht so viel Kompilierzeit überprüfen, also möchten Sie vielleicht weitere Tests schreiben, um zu überprüfen, dass Ihr Code korrekt ist. – Paul

+0

Genau. Und als zusätzlichen Bonus werden Sie mehr als nur alberne Fehler bekommen! – omnisis

14

Da Groovy 2.0 ist es möglich, Typen bei der Kompilierung zu überprüfen. Anmerkungen können für die Klasse oder Methode verwendet werden: @TypeChecked oder @CompileStatic. Der erste Befehl weist den Compiler an, die Typüberprüfung während der Kompilierung durchzuführen, und der zweite Befehl erzwingt die statische Kompilierung, die mehr oder weniger mit Binärcode wie vom nativen JAVA-Compiler resultiert. Natürlich beinhaltet die Verwendung der zweiten Anmerkung eine Typprüfung selbst.

Grails 2.2 ist das erste Release, das Groovy 2.0 verwendet.

0

Sie avaliable sein Unit-Tests können nicht geschrieben werden, wenn Sie Groovy mit Skript-Syntax verwenden. Das ist wie Schreiben von Komponententests für Shell-Skripte. Noch haben Sie eine Kompilierung zur Verfügung, es sagt Ihnen einfach nicht, dass Sustem.out.println() Unsinn ist. Eine Compileroption sollte verfügbar sein, um diese Fehler abzufangen. Nicht jedes Skript enthält Metaprogrammierung und DSL-Code.