L'utilisation correcte de Java “assert” mot-clé
Je n'ai jamais compris qu'est-ce que assert
utilisé pour, même si j'ai lu beaucoup d'exemples, ils n'ont pas vraiment je sais pas quoi ou pourquoi devrais-je l'utiliser pour.
Ainsi, au Lieu de demander à un exemple, je vais fournir l'un et laissez-moi savoir si c'est la bonne utilisation de assert
.
//The idea is that the `mode` variable should be 0 or 1, and no other number.
switch(mode) {
case 0:
//do stuff
break;
case 1:
//do other stuff
break;
default:
//assert code?
}
Si cela est correct, s'il vous plaît laissez-moi savoir comment l'utiliser dans ce cas. Si ce n'est pas la façon dont il est censé utiliser, veuillez donner un exemple.
double possible de Ce que fait valoir le faire?
Vous affirmez des expressions booléennes qui vous assumez doit être vrai. Vous faites des hypothèses lorsque vous écrivez du code, et vous devez être conscients de ce qu'ils sont.
Vous affirmez des expressions booléennes qui vous assumez doit être vrai. Vous faites des hypothèses lorsque vous écrivez du code, et vous devez être conscients de ce qu'ils sont.
OriginalL'auteur Christopher Francisco | 2013-09-20
Vous devez vous connecter pour publier un commentaire.
Pas dans ce cas.
Si vous êtes à l'affirmation d'une valeur, vous faites une déclaration, avant que certains critiques de l'évaluation est réalisée à l'aide de cette valeur, que c'est ce que vous affirmez. Vous pouvez affirmer que la valeur n'est pas nulle, ou qu'il est à moins de 2, ou quelque chose avant vous atteignez votre critique bloc de code.
Je ne voudrais pas encourager l'utilisation de que ici. Votre code ne serait pas bien lu, et, sauf si vous activez assertions avec la
-ea
drapeau, votre affirmation ne fonctionnerait pas.Au lieu de cela, ce que vous pouvez faire est de lancer une exception de quelque sorte - si ce n'est pas 0 ou 1, alors le
mode
illégale est une valeur qui ne peut pas être traitée, conduisant à une exceptionnelle/un comportement indéfini. Lever une exception de quelque sorte.assert
. Que faire si les assertions sont éteints? E. g., la valeur par défaut?Alors que je suis d'accord avec vous s'agissant de l'exception, il est important de noter que les affirme avoir une auto-documenter l'effet. Il y a des moments où c'est approprié et bénéfique d'avoir une
assert
même si vous êtes certains que sa condition ne sera jamais faux.Je ne suis pas personnellement l'impression que c'est un tel moment. Si il n'y a jamais aucun doute, la levée d'une exception explicite et forçant l'appelant de traiter ce problème est plus préférable; si les affirmations sont désactivés, alors que ces conditions peuvent glisser par décochée.
Si vous êtes sûr que la condition ne sera jamais faux puis lancer une exception est juste que l'auto-documentation, et ne pas compter sur des assertions être explicitement activé. Les assertions sont un développement d'outils en temps, quelque chose qui pourrait aller mal à l'exécution doivent être manipulés avec une exception ou normal de contrôle de flux.
Je ne suis toujours pas à comprendre votre point de vue. Les assertions sont inutiles quand ils sont éteints. Ils sont un outil de développement. Ils ne sont pas tout plus vaste que cela.
OriginalL'auteur Makoto
assert
est utilisé pour vérifier l'exactitude de certaines condition, invariant, ou postcondition. Dans l'exemple, nous voulons nous assurer queobject
n'est pasnull
lorsqu'une méthode est appelée sur elle.Une chose à retenir, c'est que
assert
doit jamais être exécutée dans le code de production. Nous n'en faire usage lors de l'essai. Il y a une option Java pour l'allumer ou l'éteindre.Comme pour votre exemple, vous pourriez utiliser:
au début de l'interrupteur bloc pour s'assurer que la
0
et1
sont passés dans l'.P. S. La discussion sur quand utiliser affirmation vs exception pourrait aider votre compréhension. L'idée est que
Ils ne devraient pas. Ils sont un outil de développement. Les conditions et les Exceptions de faire la même chose pour le code de production. Une caractéristique fondamentale de affirme, c'est qu'ils ignorent les performances, vous pouvez en utiliser autant que nécessaire, sachant qu'elles n'auront pas d'incidence sur les performances de production comme ils sont compilés.
OriginalL'auteur Terry Li
Affirmations sont utilisés essentiellement pour vérifier quelque chose qui ne devrait jamais se produire.
Certaines affirmations cas d'utilisation de http://www.javapractices.com/topic/TopicAction.do?Id=102
pré-conditions (dans les méthodes privées uniquement) - les exigences d'une méthode exige de ses appelant à remplir.
post-conditions - vérifier les promesses faites par une méthode à son appelant
classe d'invariants - valider l'état de l'objet
inaccessible-à-exécution de code - parties de votre programme qui vous vous attendez à être inaccessible, mais qui ne peuvent pas être reconnues comme telles au moment de la compilation (souvent d'ailleurs les clauses et les cas de défaut dans les instructions switch)
Ainsi que l'utilisation de l'affirmation dans votre code n'est pas correct
OriginalL'auteur Rami