IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Assertion en general


Sujet :

Langage Java

  1. #1
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut Assertion en general
    Bonjour,

    Je me demande qui d entre vous utilise l assertion courament dans un milieu pro?

    Merci,

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Je l'utilise très couramment ... dans les classes de tests unitaires.
    Sinon je préfère l'emploi de NPE ou IAE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (param == null) {
        throw new NullPointerException("Param cannot be null");
    }

  3. #3
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    Citation Envoyé par natha
    Je l'utilise très couramment ... dans les classes de tests unitaires.
    Sinon je préfère l'emploi de NPE ou IAE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  4. #4
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    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.

  5. #5
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    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?

  6. #6
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    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 ...

  7. #7
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    Citation Envoyé par in
    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:
    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..

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    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.

  9. #9
    Membre expérimenté
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. question general sur triggers (liaison avec VB)
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 16h57
  2. question general sur malloc
    Par vince3320 dans le forum C
    Réponses: 8
    Dernier message: 23/06/2004, 11h39
  3. [Reseau][General] Port et interface
    Par fadoua dans le forum Développement
    Réponses: 2
    Dernier message: 12/03/2004, 11h43
  4. socket en general
    Par kev03 dans le forum Développement
    Réponses: 3
    Dernier message: 09/07/2003, 15h56
  5. feuille de style generale
    Par Manu_Just dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/03/2003, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo