Les contrats de code sont une nouvelle fonctionnalité du Framework .NET 4.0 qui permettent de définir des contraintes dans du code et peuvent être réutilisées par des outils d’analyse ou d’écriture spécifique du code.
1. 1
Les Contrats de Code
Nestor A. Kameni
Expert C#, ASP.NET, Silverlight
Blog : http://nestor.nestasoft.fr
Twitter : @nestasoft
2. 2 Sommaire
Partie1 : Introduction
Partie 2 : Téléchargement et mise en place de la bibliothèque de contrats
Partie 3 : Utilisation des préconditions
Partie 4 : Utilisation des post-conditions
Partie 5 : Utilisation des Contrats sur les interfaces
Partie 6 : Utilisation des objets invariants
Partie 7 : Support pour les TU
Partie 8 : Héritage du contrat
Partie 9 : Les attributs du contrat
Partie 10 : Documenter vos contrats
(c) Nestor .A Kameni
3. 3 Partie 1 : Introduction (1/8)
Définition d’un contrat
o C’est une contrainte imposée par le concepteur sur une méthode, une
interface…
C’est quoi « Code Contracts »?
o Nouvelle fonctionnalité du Framework (4.0)
But
o Définir des contraintes dans du code; contraintes qui pourront être réutilisées par
des outils d’analyse / d’écriture du code.
(c) Nestor .A Kameni
4. <
>
4 Partie 1 : Introduction (2/8)
Imposer les contrats « oui ou non »?
o Dans un grand projet : Imposer l’utilisation des contrats
Cas pratique :
Équipe A Équipe B
Développeur A Développeur B Intégrateur A Intégrateur B Intégrateur C
public List<T> getListT(…) { } Utilisent les méthodes
public SupS getListSupS(…) { } getListT et getListSupS
(c) Nestor .A Kameni
5. 5 Partie 1 : Introduction (3/8)
Avantage (Cas pratique) :
o Assure au développeur que les données d’entrées sont valides et n’auront pas d’effets
secondaires sur l’exécution de la classe.
Inconvénient :
o Compilation impossible.
Dans un petit projet type perso : Le choix est laissé au développeur
(c) Nestor .A Kameni
6. 6 Partie 1 : Introduction (4/8)
Cas pratique :
Équipe unique
Développeur Intégrateur
public List<T> getListT(…) { } Utilisent les méthodes
public SupS getListSupS(…) { } getListT et getListSupS
Avantage (Cas pratique) :
o Aucun
Inconvénient :
o Compilation impossible.
o Perte de temps pour résoudre d’éventuelles anomalies.
(c) Nestor .A Kameni
7. 7 Partie 1 : Introduction (5/8)
Avantages des contrats de code
• Typage fort des contrats
• Vérification des contrats à la compilation
• Documentation auto des commentaires des contrats de code
• Héritage des contrats
• Définition des contrats de code dans des interfaces
• Création d’un assemblage qui ne contient que des contrats
(c) Nestor .A Kameni
8. 8 Partie 1 : Introduction (6/8
Avant le Framework 4.5, 4.0
• Utilisation des exceptions
(c) Nestor .A Kameni
9. 9 Partie 1 : Introduction (7/8)
Concept des contrats de code
1. Définition des contrats en utilisant les classes de l’espace de nom
2. Exécution de l’outil d’analyse des contrats
Outils proposés par Microsoft
o cccheck
o ccdocgen
o ccrefgen
o ccrewrite
(c) Nestor .A Kameni
10. 10 Partie 1 : Introduction (8/8)
Prérequis
o Incluse dans le Framework 4.5, 4.0
o Possibilité d’utiliser les contrats de code dans le FrameWork 3.5 ( Assembly
Microsoft.Contracts)
o Télécharger les outils sur Microsoft Research (http://research.microsoft.com/en-
us/projects/contracts/)
(c) Nestor A. Kameni