2009-05-15 5 views
1

Je joue à GWT. Je suis à la recherche de vérification des arguments de base. Je n'ai pas besoin d'invariants ou de résultats. Ce qui m'intéresse c'est les bonnes pratiques sur le sujet.Vérification d'argument ou Conception par contrat dans Java (GWT). Où commencer?

Par exemple, en C# j'utiliser une des ces options:

  1. if (arg1 != null) throw new ArgumentNulException....; // Official for public API;
  2. Args.NotNull(arg1); // Home grown.
  3. Contracts.Requires(arg1 != null); // Internal contract validation.

Quel est le meilleur endroit pour moi de commencer?

Ok, ce que j'ai trouvé pour le moment.

  1. Validate method arguments
  2. Programming With Assertions

Répondre

2

En général, je fais juste moi-même, selon les recommandations de Effective Java par Josh Bloch, donc:

if (arg == null) throw new NullPointerException("arg cannot be null"); 

ou

if (arg < 0) throw new IllegalArgumentException("arg must be positive"); 

Je recommande fortement d'obtenir une copie de Effective Java si vous ne Je ne l'ai pas déjà.

+0

Merci beaucoup, vient de commander Effective Java, que pensez-vous de "assert arg <0" pour le code interne? –

+0

Je ne pense pas que je serais une bonne personne pour vous donner une opinion à ce sujet, puisque je n'ai jamais vraiment pris l'habitude d'utiliser la fonction d'assertion Java 1.4, et je n'ai jamais vraiment compris les meilleures pratiques. Cela dit, je suis sûr que Effective Java en parle à un moment donné. :) –

0

Selon le wikipedia page of Design by Contract, des outils populaires pour cette méthodologie avec Java sont:

iContract2, Contract4J, jContractor, Jcontract, C4J, CodePro Analytix, STclass, Pré-processeur Jass, OVal avec AspectJ, Langage de modélisation Java (JML), SpringContracts pour le framework Spring, ou Modern Jass, Custos utilisant AspectJ, JavaDbC utilisant AspectJ, JavaTESK utilisant l'extension de Java .

Lire sur l'un d'entre eux est probablement une bonne idée. Je n'ai aucune expérience personnelle de l'un d'entre eux, mais Pragmatic Programmer dit de bonnes choses à propos de l'iContract original, ce qui pourrait être un bon point de départ.

Vous pouvez toujours essayer de le faire sur votre propre en utilisant Javas intégré assertions:

assert Expression1;
ou
assert Expression1 : Expression2 ;

Lorsque les résultats EXPRESSION1 dans un booléen et Expression2 est la valeur de votre test (optionnel). Essaye le.

+0

Je regarde rapidement jContractor et je le sens vraiment trop lourd. C'est pourquoi j'ai arrêté de plonger en cherchant et en demandant à d'autres personnes d'expérimenter. –

0

Si vous recherchez simplement la vérification d'arguments, une vérification simple avec exception devrait être la meilleure solution. Exception vous fournit une meilleure solution pour attraper un traitement que de simples assertions.

Dans ce scénario, les solutions de conception par contrat sont définitivement exagérées.