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

JavaScript Discussion :

programmation par contrat


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 155
    Points : 77
    Points
    77
    Par défaut programmation par contrat
    Bonjour,

    J'aimerais mettre en place de la programmation par contrat : ajouter des pré et post conditions à une fonction.
    J'aimerais pouvoir faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    /* declaration de la fonction toto */
    function toto(i) {
         var a = 5/i;
         return a;
    }
     
    toto.preCondition = function(i) {
         assert(i!=0, "i must not be null");
    }
     
    toto.postCondition = function(i, rv) {   // rv is the returned value
         assert(rv==(5/i));
    }
     
     
    /* utilisation */
    toto(1);
    // => la pré et post condition sont appelées automatiquement et testent si les assertions sont vraies
    Voici ce que j'arrive à faire pour l'instant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Function.prototype.contract = function() {
    	this.preCondition(arguments);
    	this.call(arguments);
    	this.postCondition(arguments);
    };
     
    var toto = function() {
    	console.log('toto');
    }
     
    toto.preCondition = function() {
    	console.log('pre');
    }
    toto.postCondition = function() {
    	console.log('post');
    }
    toto.contract();
     
    // => affiche:
    // pre
    // toto
    // post
    Là où je bloque c'est pour garder ce fonctionnement sans passer par l'appel toto.contract() mais directement par toto().

    Quelqu'un aurait une idée ?

    Merci d'avance

    PS: Merci de m'indiquer si ce n'est pas clair.

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Quand une tête pense seule, elle devient folle.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 155
    Points : 77
    Points
    77
    Par défaut
    Merci pour le lien.

    J'ai trouvé une librairie qui a l'air plutôt pas mal:
    http://www.cerny-online.com/cerny.js/

    Elle gère la programmation par contrat, du profiling de code, des loggers, ...

    Je vais la tester

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Interessé
    Ai regardé rapidement la librairie que tu as trouvée.
    Cela semble très complet et même beaucoup plus que ce que tu souhaitais ! Elle me semble aussi de prime abord pas évidente à utiliser.

    Pourras tu stp nous laisser tes impressions après quelques manipulations ?

    Merci,


    ERE
    Quand une tête pense seule, elle devient folle.

Discussions similaires

  1. Programmation par contrat en C++
    Par bolhrak dans le forum C++
    Réponses: 11
    Dernier message: 07/09/2007, 00h12
  2. [Language]Programmation par contrat
    Par manube dans le forum Langage
    Réponses: 3
    Dernier message: 20/12/2005, 10h16
  3. [Eiffel] Programmation par contrats
    Par SkIllz2k dans le forum Autres langages
    Réponses: 1
    Dernier message: 02/05/2005, 20h05
  4. [Tests]La programmation par contrats
    Par fabien.raynaud dans le forum Test
    Réponses: 6
    Dernier message: 26/07/2004, 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