10
votes

Groovy (Grails) vous donnera-t-il compilation chèque de temps comme Java?

Groovy (Grails) vous donnera la compilation chèque de temps comme Java?

Si vous spécifiez toujours le type, cela changera-t-il beaucoup de choses?


0 commentaires

6 Réponses :


14
votes

Le compilateur groovy trouvera bien sûr des erreurs de syntaxe, mais presque aucune erreur de type, comme avec Java. Même l'utilisation de variables non déclarées passera souvent la compilation.

Les types de déclarations augmenteront la quantité de vérification effectuée, mais pas par beaucoup.

C'est parce que Groovy est une langue dynamique avec de puissantes caractéristiques de métaprogrammation qui empêchent le compilateur de savoir par exemple. Quelles méthodes ou champs un objet donné auront un objet compilé, car il est possible que celui-ci soit modifié au moment de l'exécution par autre code.

Toutefois, les plugins IDE offrent un compromis en marquant des membres de variables avec un type déclaré non présent dans la déclaration de classe comme éventuelles erreurs. Ensuite, le développeur peut décider si ce membre sera présent à l'exécution, ou s'il vient de faire une faute de frappe. De plus, les membres de la classe connus apparaissent dans l'auto-complétion.


2 commentaires

Quel plugin Intellij pourriez-vous suggérer que offre un compromis en marquant des membres de variables avec un type déclaré non présent dans la déclaration de classe comme étant éventuelles erreurs ?


@Michaelz: Désolé, je n'ai pas travaillé avec Groovy depuis longtemps, mais je m'attendrais à ce que cela ferait partie du soutien de Groovy déjà construit à Intellij.



0
votes

NO.

Il a été conçu pour être une langue de programmation dynamique qui est à peu près le contraire à la vérification du temps compilé.

Vous devrez ajouter plus de tests unitaires à la place.


2 commentaires

Je pense que c'est le point - vous n'avez pas autant de vérification du temps compilé, vous pouvez donc vouloir écrire plus de tests pour vérifier que votre code est correct.


Exactement. Et comme bonus supplémentaire, vous attrapez plus que des erreurs de type idiot!




17
votes

Depuis Groovy 2.0, il est possible de vérifier les types au moment de la compilation. Les annotations peuvent être utilisées sur la classe ou la méthode: @typechecked ou @Compilestatique. Le 1er one raconte compilateur de faire la vérification du type lors de la compilation et de la 2e seule force de faire "compilation statique" qui entraîne davantage ou moins avec du code binaire comme du compilateur Java natif. Bien sûr, l'utilisation de la 2e annotation implique le type de vérification de lui-même.

grails 2.2 est la première version qui utilise Groovy 2.0.


0 commentaires

2
votes

groovy 2.0 a @CompileStatique et @typechecked Vous pouvez vérifier ce bon test de performance entre Groovy 2.0 et Java http://java.dzone.com/articles/groovy-20-Performance-compared

comme topr a dit ... Cette fonctionnalité sera disponible dans Grails jusqu'à la version 2.2


0 commentaires

0
votes

Vous ne pouvez pas écrire des tests d'unité si vous utilisez Groovy avec la syntaxe de script. C'est comme des tests d'unité d'écriture pour les scripts Shell. Néanmoins, vous avez une compilation disponible, cela ne vous dit tout simplement pas que Sustem.out.println () est absurde. Une option de compilateur doit être disponible pour attraper ces erreurs. Tous les scripts ne contiennent pas de méta-programmation et de code DSL.


0 commentaires