Bonjour,
Je me demande qui d entre vous utilise l assertion courament dans un milieu pro?
Merci,
Version imprimable
Bonjour,
Je me demande qui d entre vous utilise l assertion courament dans un milieu pro?
Merci,
Je l'utilise très couramment ... dans les classes de tests unitaires.
Sinon je préfère l'emploi de NPE ou IAE :
Code:
1
2
3 if (param == null) { throw new NullPointerException("Param cannot be null"); }
je ne vois pas vraiment l interet de ta solution, assertion est beaucoup plus pratique, c est son interret de faire des check sur tes variables, de lever des null pointer exception comme ca... c est pas genial...Citation:
Envoyé par natha
Je ne me suis jamais posé la question... je n'ai jamais vu d'assert dans du code d'API que j'ai pu consulter.
Ce dont je suis sûr c'est que des personnes beaucoup plus compétentes que moi en programmation java font les if () throw...
Par ailleurs je crois que les assertions sont plutôt quand on est dans un cadre de programmation par contrat et ce n'est pas vraiment notre mode de développement.
les assertions sont utilise par une elite de developpeur je dirais.
en fesant des throw comme ca, quand tu termine ton development, tu y retourne a ton code et tu les enleve ou bien tu les gardes comme ca? c est just pour debugging, no? ou bien Unit test?
Je lisais tout à l'heure un article de Sebastien Meric sur les assertions.
Il dit clairement qu'il ne faut pas utiliser les assertions pour tester les paramètres ... Les paramètres passés à une méthode dépendent des utilisateurs de la classe. S'ils sont "faux" c'est généralement dû à une mauvaise utilisation, donc l'exception est justifiée.
L'assertion sert plutôt à contrôler quelque chose qui doit être vrai lors de l'exécution (précondition, invariant ...).
en espérant être clair ... :?
oui c vrai, mais ma question etait plustot, qui s en sert regulierement:Citation:
Envoyé par in
Voila les regles des assertions:
-Ne pas utiliser pour valider des argument d une method public ou des arguments en command line.
-Ne pas utiliser les assertions s ils ont un side effect, modifier la logique d execution, changer des valeurs...
-utiliser les assertion pour verifier les argument d une private method.
-utiliser les assertions dans une method public pour verifiier des cas qui ne vont jamais ce produrie, NEVER EVER supposed to happen....
Voila, voili,
Merci pour tout vos posts..
Oui, pour moi ce sont les assertions qui servent au débuggage puisque la seule chose qu'elles puissent faire, d'autant que je saches, est d'afficher un message sur la console. En revanche, le mécanisme des Exceptions permet de reporter le traitement d'une erreur dans la classe appelante. Quand une classe est publique, il faut toujours considérer qu'on ne connaît pas le contexte dans lequel le code qu'on écrit sera appelé, c'est à ça que sert le report d'Exception.
La partie de l'article qui m'a marqué, c'est que le code DOIT fonctionner en désactivant les assertions.
Le contre-exemple qu'il propose est parlant, on ne soit pas tester qu'une connection est ouverte par ce biais. On ne teste donc à priori pas non plus l'existence d'un fichier, mais plutôt des états de variable privées dont on connait parfaitement le contenu, mais plutôt dans un optique de validité du code.
c'est presque du test unitaire. D'ailleurs je trouve que ça rejoint la notion de programmation par contrat, que l'on va ensuite valider lors de tests unitaire.
Donc le assert n'est peut-être pas réservé à une élite, mais il est à utiliser avec circonspection. Beaucoup d'erreur de programmation possible.