Question existentielle :
- Quel est l'intérêt et l'utilité de la procédure ASSERT ? :aie:
J'ai lu l'aide de Delphi, mais je ne vois toujours pas à quoi elle peut bien servir.
Quelqu'un peut-il m'éclairer ...
Merci.
;)
Version imprimable
Question existentielle :
- Quel est l'intérêt et l'utilité de la procédure ASSERT ? :aie:
J'ai lu l'aide de Delphi, mais je ne vois toujours pas à quoi elle peut bien servir.
Quelqu'un peut-il m'éclairer ...
Merci.
;)
Cela permet de valider des conditions particuliéres nécessaires à un traitement, en qq sorte de s'assurer de prérequis.Citation:
Envoyé par Lung
Elles peuvent être dévalidées à la compilation par une directive.
Dans le code suivant je m'assure que l'appel à la méthode se fait bien avec un objet initialisé. Lors de la phase de développement c'est à mon avis trés utile.
Pour une version de production cela permet de remonter des erreurs de conception ou des cas non prévu au lieu d'un crash.
Pour plus de détails voir : http://smeric.developpez.com/java/astuces/assertions/Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 {*------------------------------------------------------------------------------ Prépare et ouvre une requête SQL @param AQuery Nom du composant TADOQuery utilisé @param AInstructionSQL Requête SQL à exécuter ------------------------------------------------------------------------------*} procedure TdmPrincipal.NouvelleInstructionSQL(AQuery : TADOQuery; AInstructionSQL :String); begin Assert(AQuery<>Nil,'L''objet requête n''est pas initialisée.'); Assert(AInstructionSQL <>'','La requête SQL est vide.'); With AQuery do begin DisableControls; Close; SQL.Clear; SQL.Add(AInstructionSQL); Open; EnableControls; end; end;
et aussi
http://fr.wikipedia.org/wiki/Programmation_par_contrat
et enfin ce post à propos de Chrome:
http://www.developpez.net/forums/sho...62&postcount=4
Et quelle est la différence avec un if avec un raise, ou un try ... except, ... ?
:koi:
Présenté comme ça, aucune si ce n'est une concision d'écriture.Citation:
Envoyé par Lung
La directive suivante
permet de les gérer lors de la compilation sans ajout de bloc conditionnel du type :Citation:
{$C+} ou {$C-} {$ASSERTIONS ON} ou {$ASSERTIONS OFF}
Ce n'est qu'une partie de la programmation par contrat, du peu que j'en connaisse.Code:
1
2
3
4 {$IFDEF DEBUG} if Query <> nil then raise Exception.Create('Query à nil'); {$ENDIF}
Elles permettent aussi de documenter ton code et de faciliter les tests.
D'accord.
Je vois mieux.
:merci: