Bonjour,
J'aimerais mettre en place de la programmation par contrat : ajouter des pré et post conditions à une fonction.
J'aimerais pouvoir faire ça:
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 /* 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
Là où je bloque c'est pour garder ce fonctionnement sans passer par l'appel toto.contract() mais directement par toto().
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
Quelqu'un aurait une idée ?
Merci d'avance
PS: Merci de m'indiquer si ce n'est pas clair.
Partager