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 :

[Bonnes pratiques] Assertion, préconditions et compagnie


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Points : 52
    Points
    52
    Par défaut [Bonnes pratiques] Assertion, préconditions et compagnie
    Bonjour,

    J'avais fait un topic, il y a quelques temps, sur la validation de données avec le framework OVal, topic qui s'était avéré assez instructif. Aujourd'hui, je reviens sur la question de la validation de données, et celle des assertions (pré-condition, post-condition, invariant, ...)

    Cas d'étude :
    On souhaite réaliser une fonction simple qui affiche n fois un message à l'écran. Plusieurs contraintes doivent être respectées pour l'exécution de la fonction, faute de quoi on génère une exception.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void printMessage(String message, int loop) {
      for(int i=0; i<loop; i++) {
        System.out.println(message);
      }
    }
    Contraintes à respecter :
    - Le message ne doit pas être nul ;
    - Le nombre de répétitions doit être positif ou nul.

    Après quelques recherches, j'ai trouvé qu'on pouvait faire ça de quatre manières différentes (au moins) :
    - Avec des if(...)
    - Avec des assert
    - Avec les annotations java (framework OVal)
    - Avec les méthodes de la classe Assert de JUnit

    Mes impressions :
    - J'ai quelques réticences avec les if parce qu'ils prennent pas mal de place dans le code (en comptant les accolades et un code correctement formatté).
    - On peut désactiver les assert au moment de l'exécution du programme, ce qui pourrait permettre de faire sauter toutes les contraintes...
    - Pour utiliser OVal, il faut utiliser la programmation par aspect, afin qu'un composant analyse les annotations et inspecte chaque méthode avant de l'exécuter, est-ce que ce n'est pas problématique au niveau des performances ?
    - JUnit est, selon moi, réservé aux tests unitaires et non pas aux vérifications de cohérence

    => D'où ma question : au fond, quelle est la meilleure manière de faire des assertions en Java ? Laquelle utilisez-vous ? Laquelle déconseillez-vous ?

    D'avance merci !

    Junta

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Moi je n'utilise jamais les assertions java, toujours des if pour les préconditions. Je VEUX que mes préconditions soient TOUJOURS vérifiées.

    Certes, je ne mets pas beaucoup de préconditions... mais celles que je mets, au moins, qu'elles soient réalisées.

    Il est exact, à mon avis, que JUnit ne sert pas aux vérifications de cohérence. Toutefois, il aide à empecher l'apparitition d'incohérences : un code sans bug génère, je suppose, des valeurs cohérentes. Et même je l'utilise pour vérifier comment mon code se comporte en cas d'incohérence.

    Je fais un code assez permissif, sans aucune préoccupation pour la couverture de test, et encore moins pour vérifier si toutes les préconditions sont OK tout le temps. J'essaie seulement de trouver quelles sont les fonctions sensibles, et de vérifier seulement celles-là. Je trouve, peut être à tord, que c'est plus facile de le faire évoluer ainsi.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

Discussions similaires

  1. Bonnes pratiques de protections individuelles
    Par Community Management dans le forum Sécurité
    Réponses: 22
    Dernier message: 05/04/2013, 11h47
  2. Réponses: 7
    Dernier message: 02/11/2005, 15h30
  3. [Bonne pratique]Stratégie d'allocation
    Par jowo dans le forum C
    Réponses: 1
    Dernier message: 05/10/2005, 14h47
  4. [FOREIGN K] Valeur de champ = nom de table. Bonne pratique ?
    Par Seb des Monts dans le forum Langage SQL
    Réponses: 9
    Dernier message: 17/05/2005, 10h56

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