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.