Quand devrais-je utiliser Validate de Apache Commons, et quand devrais-je simplement utiliser le mot-clé "Aster"? p>
3 Réponses :
Les assertions peuvent être désactivées (en fait, elles sont normalement), elles ne sont donc pas utiles pour la validation de la saisie de l'utilisateur, par exemple. p>
validate.Irue et "assert" servir complètement à des fins différentes.
en termes de conception par contrat, des affirmations peuvent être utilisées pour définir
pré et postconditions ainsi que les invariants de classe. Si au moment de l'exécution
ceux-ci sont détectés de ne pas tenir, cela pointe vers une conception ou une mise en œuvre
Problème dans le système. P> validate.istrue strong> Il est généralement utilisé lorsqu'une API publique devrait être tolérante contre le mauvais
saisir. Dans ce cas, son contrat peut promettre de lancer un
IllegalargumentException à une contribution erronée. Apache Valider les offres
un raccourci pratique pour la mise en œuvre de cela. P> Étant donné qu'une idée illegalargumentException est lancée, il n'a pas de sens
Utiliser Validate Apache pour vérifier les postconditions ou les invariants.
De même, il est incorrect d'utiliser «Assert» pour la validation des entrées utilisateur,
Étant donné que la vérification d'assertion peut être désactivée au moment de l'exécution. P> en utilisant les deux strong> Plus d'informations: p>
Les déclarations d'affirmation de Java sont généralement utilisées pour la documentation (par des moyens
d'affirmations) dans quelles circonstances peuvent être invoquées et
Ce que leurs appelants peuvent s'attendre à être vrais après. Les affirmations peuvent
éventuellement être vérifié au moment de l'exécution, entraînant une assertionError
exception s'ils ne tiennent pas. P>
org.apache.commons.lang.validate est différent. Il offre un ensemble simple
des méthodes ressemblant à des junits qui vérifient une condition et lancent un
"IllegalargumentException" Si la maladie ne tient pas. P>
Il est possible, cependant, d'utiliser à la fois en même temps, bien que
à des fins différentes. Dans ce cas, le contrat devrait explicitement
nécessite une exception illégale pour être soulevée sur certains types
d'entrée. Ceci est ensuite implémenté via Apache Validate.
Les invariants et les postconditions sont alors simplement affirmés, ainsi que
comme préconditions supplémentaires possibles (par exemple, affectant le
état de l'objet). Par exemple: p>
Joshua Bloch. Java efficace if>, point 23: vérifier les paramètres de validité.
Point 49 en 3ème édition du livre.
@thilo a raison pour affirmer le mot-clé, mais envisager d'assertion comme Spring Assert. P>
voir conditionnelFailReseXplain de GUAVA. P>
duplicata de sur ASSERTS ET EXCEPTIONS; Java