Vous êtes sur la page 1sur 18

Normes de programmation en langage C++

Bakhtouchi Abdelghani EMP, Bordj El Bahri bakhtouchi@yahoo.fr

ANNEE: 2009/2010

PDF created with pdfFactory Pro trial version www.software-partners.co.uk

Sommaire
1. Introduction .................................................................................................................... 1 2. Prsentation .................................................................................................................... 1
2.1. 2.2. 2.3. Format des fichiers source ..................................................................................... 1 Mise en forme du code source ............................................................................... 1 Longueur des lignes .............................................................................................. 2

3. Les commentaires ........................................................................................................... 2


3.1. 3.2. Commentaires de fin de ligne ................................................................................ 2 Commentaires en bloc ........................................................................................... 3

4. Les dclarations .............................................................................................................. 3


4.1. 4.2. 4.3. Les constantes ....................................................................................................... 3 Les variables ......................................................................................................... 4 Les types de donnes ............................................................................................ 5

5. Espacement du code ....................................................................................................... 5


5.1. 5.2. 5.3. Lignes vides .......................................................................................................... 5 Espaces vides ........................................................................................................ 6 L'imbrication ........................................................................................................ 6

6. Les fonctions .................................................................................................................. 7 7. Pratiques de programmation ........................................................................................... 7


7.1. 7.2. 7.3. 7.4. Affectation ............................................................................................................ 7 Parenthses ........................................................................................................... 8 Les instructions break et continue ................................................................. 8 Oprateur galit en virgule flottante ..................................................................... 8

8. Programmation des TP ................................................................................................... 9


8.1. 8.2. Structure gnrale dun projet ............................................................................... 9 Exemple complet ................................................................................................ 12

Rfrences............................................................................................................................ 15

PDF created with pdfFactory Pro trial version www.software-partners.co.uk

1. Introduction
Les normes de programmation sont un ensemble de rgles rgissant la rdaction du code des programmes. Contrairement ce que plusieurs lves pensent, ces rgles ne sont pas l pour embter les programmeurs mais, au contraire, pour faciliter leur travail en amliorant la lisibilit et la clart du code. Elles permettent, lorsquelles sont bien appliques, de se retrouver facilement dans le code crit par dautres et mme dans celui quon a crit soimme. Vous devez donc appliquer ces rgles en tout temps. Obligez-vous le faire et vous verrez que, trs rapidement, cela deviendra un rflexe. Le prsent document propose de manire synthtique des lignes directrices de mise en forme du code source du langage C++. Les normes portent plus spcialement sur les noms de fichier et leur organisation, les commentaires, les dclarations, les instructions, les expressions, lespace blanc, les conventions de nommage et les pratiques de programmation. Pourquoi des normes de programmation ? 80% des cots dun logiciel au cours de son cycle de vie vont sa maintenance. Il est trs rare quun logiciel soit maintenu durant toute son existence par son auteur original. Les normes de programmation amliorent la lisibilit du code, ce qui permet dautres informaticiens et programmeurs de le comprendre plus rapidement et plus fond. De telles normes favorisent en outre : o lcriture de programmes corrects, o lobtention dun style consistant dans le code, o la dtection des erreurs les plus courantes. Pour quune norme fonctionne, chaque personne qui crit du logiciel doit sy conformer. Tout le monde, enseignants comme lves.

2. Prsentation
2.1. Format des fichiers source
Les fichiers doivent avoir les extensions suivantes : Fichier source : .cpp Fichier den-tte : .h Le nom dun fichier doit tre significatif (indiquant le contenu), la premire lettre en majuscule. Le nom du fichier d'entte doit tre identique au nom du fichier source dont il dfinit. Exemple: Vecteurs.h, Vecteurs.cpp.

2.2. Mise en forme du code source


Un fichier source de plus de 2000 lignes est encombrant et devrait tre vit.

1 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

Chaque fichier doit commencer par un en-tte identifiant les objectifs du fichier, son auteur ainsi que la date de cration. Un fichier source peut contenir plusieurs sections logiques. Chaque section doit tre spare par une ligne vide et un commentaire identifiant chacune de ces sections. Suite cet en-tte, le fichier source doit contenir les directives dimportation "#include", puis, les dclarations de constantes, types et structures. Ne jamais spcifier de chemin daccs complet dans les directives "#include". Cest dans lenvironnement de compilation quon doit spcifier o aller chercher les fichiers dinclusion. (Ex: VC++ Touls>Options>Directories) #include NomLibrairie.h // Ok #include c:\dev\include\NomLibrairie.h // viter Utiliser la directive #include NomLibrairie.h pour des librairies dfinies par le dveloppeur. Par consquent, ces librairies doivent tre places dans le mme rpertoire. Utiliser la directive #include <NomLibrairie.h> pour des librairies standard fournies par le fabricant du compilateur.

2.3. Longueur des lignes


viter les lignes de plus de 80 caractres pour s'assurer d'diter et d'imprimer sans problme. Appliquer les rgles suivantes pour une instruction sur plusieurs lignes : o Changer de ligne aprs une virgule ; o Changer de ligne avant un oprateur ; o Aligner la nouvelle ligne avec la ligne prcdente ;
nomLong1 = nomLong2 * (nomLong3 + nomLong4 nomLong5) + 4 * nomLong6; // Ok nomLong2 = nomLong2 * (nomLong3 + nomLong4 - nomLong5) + 4 * nomLong6; // viter

3. Les commentaires
Inclure des commentaires bien penss qui expliquent le programme. Le programme principal doit avoir une prface importante comprenant une brve description du problme, des rfrences appropries des documents externes, le nom du programmeur ou de l'quipe de programmeurs, la date de la ralisation originale, et un journal des changements. Les sections de code difficiles, les formules complexes, les variables importantes doivent aussi tre expliques par des commentaires. Les programmes peuvent avoir deux styles de commentaires :

3.1. Commentaires de fin de ligne


Les caractres " //" indiquent un dbut de commentaire et ce, jusqu' la fin de la ligne o ils se trouvent.

2 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

Exemple: void main() { // ceci est un commentaire char a; // ceci est aussi un commentaire }

3.2. Commentaire en bloc


Pour mettre en commentaire plusieurs lignes, utiliser plusieurs lignes de commentaires dlimits par deux lignes contenant des toiles. Exemple: //********************************************* // ceci est un bloc // servant de commentaire //********************************************* Les commentaires en bloc sont utiliss dans l'entte du fichier, les dfinitions des fonctions et pour expliquer des parties complexes du code. Exemple: //******************************************** // Nom du fichier // Information sur la version // Date // Auteur(e)(s) // Copyright (sil y a lieu) //******************************************** Seulement pour dsactiver temporairement certaines parties du code comportant plusieurs lignes, utiliser les caractres " /* */ ". Pour dsactiver temporairement une ligne utiliser les caractres "//". Exemple: /*If { max } else { Max }*/ ... //(a (a > b) = a;

= b;

> b) ? max = a : max = b;

4. Les dclarations
4.1. Les constantes
Les constantes sont dclares pour viter de mettre des nombres dans le code except 0 et 1. La mise jour de ces nombres sera plus rapide et plus sre. 3 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

const double TAXE = 0.125; prix = prixBrut + prixBrut * TAXE; au lieu de: prix = prixBrut + prixBrut * 0.125; Les constantes doivent tre dclares aprs les inclusions de librairies. Le nom de la constante est crit entirement en majuscule et les mots internes doivent tre spars par un soulign "_". const int VALIDE = 1; enum Couleur {BLEU, BLANC, VERT}; const double NIVEAU_CRITIQUE = 4.0; Les constantes doivent toujours tre dfinies avec " utiliser "#define". const" ou " enum"; ne jamais

const double PI = 3.1416; enum Couleur {BLEU, BLANC, ROUGE}; au lieu de: #define #define #define #define PI (3.1416) BLEU (0) BLANC (1) VERT (2)

4.2. Les variables


Le nom d'une variable commence toujours par une lettre minuscule. Si le nom est compos, les autres mots commenceront par une lettre majuscule. Les dclarations des variables doivent tre places seulement au dbut dun bloc (un bloc est une partie de code dlimite par une paire daccolades "{" et "}"). Initialiser les variables l o elles sont dclares. void main() { double prix = 0.0; // dbut du bloc principal int tailleTableau = 10; if (condition) { double total = prix; ... } } Les noms de variables doivent tre significatifs pour viter les ambiguts. Ils ne doivent pas commencer par "_" ou "$" mme si cest permis par le langage. int longueurNom = 20; // au lieu de longNm int nombreOccurrence = 0; // au lieu de nbOc Le nom dune variable boolenne doit tre formul comme une proposition.

4 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

bool estVide = true; Ne pas initialiser plusieurs variables une mme valeur dans une seule instruction. fChar = gChar = c; // viter Les variables utilises comme compteurs de boucle doivent tre des lettres i, j, k, l, m, ... et elles doivent tre dfinies au moment de leur utilisation uniquement. Exemple : for (int i = 0; i < 10; i++) { for (int j = 0; j < 20; j++) { ... // Code excuter } } Dclarer une variable par ligne afin d'encourager les commentaires. int taille; // taille du tableau int compteur; // nombre d'occurrences au lieu de: int taille, compteur; Ne pas placer des types diffrents sur la mme ligne : int taille; double x; // viter

4.3. Les types de donnes


Le nom d'un type commence toujours par une lettre majuscule. Si le nom est compos, les autres mots commenceront aussi par une lettre majuscule. Exemple: struct Point2D { double x; double y; }; typedef Point2D *TableauPoint;

5. Espacement du code
5.1. Lignes vides
Les lignes vides amliorent la lisibilit en sparant des sections de code qui sont logiquement relies. Utiliser une ligne vide : Entre des sections dun fichier source ; Entre des dfinitions de structures; Entre les fonctions; Entre les variables locales dune fonction et sa premire instruction ; 5 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

Avant un commentaire en bloc; Entre les sections logiques lintrieur dune fonction.

5.2. Espaces vides


Utiliser des espaces vides dans les cas suivants : Entre un mot rserv et une parenthse. Exemple: while (condition) { ... } Aprs les virgules dans une liste darguments. Exemple: enum Couleur {BLEU, BLANC, ROUGE}; double Vec[4] = {18, 15, 33, 11}; x = Puissance(2, (i + 1)); Entre les oprateurs binaires et leurs oprandes. Exemple: a += c + d; a = (a + b) / (c * d); Entre les expressions dans une boucle for. for (expr1; expr2; expr3)

5.3. L'imbrication
L'imbrication sert augmenter la lisibilit du code en clarifiant le dbut et la fin de chaque bloc d'instructions. Les accolades du bloc doivent tre places au mme niveau. L'imbrication de dbut de bloc doit tre place la ligne suivant l'accolade, et avec un dcalage droite. Si vous utiliser un diteur tel que l'diteur de Visuel Studio , un retour ligne cre automatiquement un dcalage (tabulation) droite de 04 espaces. Si vous utiliser un diteur de texte simple tel que Notepad, utiliser 04 espaces pour chaque dcalage au lieu d'utiliser la tabulation. Exemple if (n > 0) { // les deux accolades au mme niveau // un dcalage droite de 4 espaces X = 20; for (int i = 0; i < n; i++)

6 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

{ // deux dcalages droite x = x + i; } }

6. Les fonctions
Une fonction doit excuter une tche prcise et son nom doit bien dcrire cette dernire. Si on a du mal choisir un nom dcrivant la fonction, cest peut-tre parce quon essaye de dfinir une fonction qui effectue plus dune tche. Le nom d'une fonction commence toujours par une lettre majuscule. Si le nom est compos, les autres mots commenceront aussi par une lettre majuscule. Les prototypes de fonctions dun fichier source doivent tre dclar dans le fichier dentte correspondant. Les fonctions ne retournant aucune valeur, doivent avoir le type "void" Un commentaire en bloc doit tre plac avant la dclaration de chaque fonction, identifiant les objectifs de la fonction et contenant une description de sa sortie. Les paramtres d'entrs et de sorties de la fonction doivent tre aligns un par ligne est dcrit par des commentaires. Les paramtres d'entres doivent tre prcds par le mot rserv " const" pour viter leurs modifications non intentionnes. Exemple:
//******************************************** // La fonction MaxTab sert calculer la valeur // max dun tableau dentier. // Sortie : la valeur du maximum //******************************************** int MaxTableau(int *Tab, // un pointeur sur le tableau int taille) // taille du tableau { ... // corps de la fonction }

7. Pratiques de programmation
7.1. Affectation
viter dutiliser loprateur dassignation un endroit o il peut tre confondu avec loprateur dgalit. Exemple : c = d; if (c != 0) au lieu de :

7 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

if ((c = d) != 0) // viter Eviter des instructions comportant plus dune incrmentation tels que : c++ = d++; a = c++ + d++;

7.2. Parenthses
Utiliser les parenthses dans des expressions impliquant des oprateurs mixtes pour viter les problmes de prcdence des oprateurs. if ((a == b) && (c == d)) // Ok au lieu de : if (a == b && c == d) // viter Utiliser les parenthses dans une expression comme la suivante : (x >= 0) ? a = x : a = -x;

7.3. Les l'instruction break et continue


L'instruction break ne doit tre utilis que dans une structure ne doit avoir quun seul point de sortie. Exemple : for (i = 0; i < 1000; i++) { if (a[i] == b) break; // viter } ce bloc peut tre remplac par le bloc while suivant : trouve = FALSE; i = 0; while ((i < 1000) && !trouve) { if (a[i] == b) trouve = TRUE; i++; } Nutiliser jamais l'instruction continue. switch. Une boucle

7.4. Oprateur galit en virgule flottante


Ne jamais comparer deux nombres en virgule flottante avec loprateur dgalit " ==". Il peut y avoir une diffrence non significative entre les deux nombres due leur reprsentation interne, de sorte que loprateur ne retournera jamais TRUE. Remplacer : float a, b; // ou double a, b if (a == b) par : 8 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

if (abs(a - b) < TOLERANCE) De la mme faon, float f = 0.1 + 0.1 + 0.1; if (f == 0.3) peut retourner FALSE.

8. Programmation des TP
8.1. Structure gnrale dun projet
Un projet doit contenir un programme principal, un ensemble de modules contenant les fonctions et l'ensemble de fichiers entte correspondant ces modules. Exemple: Fichiers du TP1 |___ Fichiers Source | |___ Principal.cpp | |___ Vecteur.cpp | |___ Matrice.cpp |___ Fichiers entte |___ Vecteur.h |___ Matrice.h

1. Structure dun programme principal


La structure gnrale dun programme principal doit contenir: Un commentaire en bloc contenant les informations du programme; Les inclusions des librairies standard et dfinit par l'utilisateur; Les dclarations de structures de donnes et de types; Des fonctions, en nombre d'exercice du TP, portant les noms Exo1(), Exo2(), Un titre d'exercice en commentaire doit suivre l'appel et la dclaration de chaque fonction. Exemple : //******************************************** // Prsentation du TP // Date de cration // Auteur(e)(s) //******************************************** #include <iostream.h> #include "Vecteur.h" ... void void ... 9 PDF created with pdfFactory Pro trial version www.software-partners.co.uk Exo1(void); Exo2(void);

//Dclarations des structures de donnes void main() { Exo1(); // Titre de l'exercice 1 //Exo2(); //Titre de l'exercice 2 //... } void Exo1(void) // Titre de l'exercice 1 { ... // Programme relatif l'exercice 1 } void Exo2(void) // Titre de l'exercice 2 { ... // Programme relatif l'exercice 2 } ...

2. Structure gnrale dun fichier source (module)


Un fichier source regroupe un ensemble de fonctions ncessaires pour l'excution du programme principal. Ce fichier doit contenir: Un commentaire en bloc contenant les informations du module; Les inclusions des librairies standard et dfinit par l'utilisateur; Exemple : //******************************************** // Prsentation du fichier source // Date de cration // Date de la dernire mise jour // Auteur(e)(s) //******************************************** #include <iostream.h> ... //******************************************** // Prsentation de la fonction 1 // Sorties : prsentation des sorties //********************************************
TypeFonction1 NomFonction1(paramtre1, // description paramtre1 paramtre2, // description paramtre2 ...) // description paramtre

{ ... 10 PDF created with pdfFactory Pro trial version www.software-partners.co.uk // Corps de la fonction 1

} //******************************************** // Prsentation de la fonction 2 // Sorties : prsentation des sorties //********************************************


TypeFonction2 NomFonction2( paramtre1, // description paramtre1 paramtre2, // description paramtre2 ...) // description paramtre

{ ... } ... // Corps de la fonction 2

3. Structure gnrale dun fichier dentte


Un fichier entte regroupe les prototypes des fonctions d'un fichier source. Ce fichier doit contenir: Un commentaire en bloc contenant les informations du fichier; Les inclusions des librairies standard et dfinit par l'utilisateur; Les dclarations de structures de donnes et de types; Exemple : //******************************************** // Prsentation du fichier entte // Date de cration // Date de la dernire mise jour // Auteur(e)(s) //******************************************** // coordonnes d'un point dans un plan typedef struct Point2D { double x; double y; } *TableauPoint; ... //******************************************** // Prsentation de la fonction 1 // Sorties : prsentation des sorties //********************************************
TypeFonction1 NomFonction1( paramtre1, // description paramtre1 paramtre2, // description paramtre2 ...); // description paramtre

//******************************************** // Prsentation de la fonction 2 11 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

// Sorties : prsentation des sorties //********************************************


TypeFonction2 NomFonction2( paramtre1, // description paramtre1 paramtre2, // description paramtre2 ...); // description paramtre

...

8.2. Exemple complet


1. Enonc du TP
Exercice 1: Surface et primtre d'un rectangle a) Ecrire une fonction double Surface(double Longueur, double Largeur) qui calcul la surface dun rectangle. b) Ecrire une fonction double Perimetre (double Longueur, double Largeur) qui calcul le primtre dun rectangle. Exercice 2: Affichage et lecture d'un tableau a) Ecrire une fonction void AfficheVec1(const int k1, const int k2, double *Vec) permet l'affichage de la partie comprise entre les indices k1 et k2 d'un tableau Vec. qui

b) Ecrire une fonction void RemplirVec1(const int a, const int b, const int k1, const int k2, double *Vec) qui permet de remplir la partie comprise entre les indices k1 et k2 d'un tableau Vec par des valeurs alatoires comprises entre a et b.

2. Solution du TP
Le fichier principal.cpp
//*********************************************************// // Exemple d'illustration d'un TP contenant deux exercices // // Date de cration: 28/09/2009 // // Auteurs : Cne Bouznade & Cne Bakhtouchi // //*********************************************************// #include <iostream.h> #include "Geometrie.h" #include "Vecteurs.h" void Exo1(void); void Exo2(void); void main () { //Exo1(); //-- Surface et primtre d'un rectangle --// Exo2(); //-- Affichage et lecture d'un tableau --// } //---------------------------------------------------------// void Exo1(void) //-- Surface et primtre d'un rectangle --// { //--- a) calcul de la surface d'un rectangle ----// double Longueur = 10; double Largeur = 12.5;

12 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

cout << "a) La surface du rectangle est: " << Surface(Longueur, Largeur) << endl; //--- b) calcul du primtre d'un rectangle ----// cout << "b) Le primtre du rectangle est: " << Perimetre(Longueur, Largeur) << endl; } //-----------------------------------------------------------// void Exo2(void) //-- Affichage et lecture d'un tableau --// { //-- a) Affichage des lment d'un tableau --// int k1 = 0; int k2 = 3; double Vec[4] = {18, 15, 33, 11}; cout << "a) Les lments du tableau sont: "; AfficheVec1(k1, k2, Vec); cout << endl; //-- b) Remplissage des lment d'un tableau --// int a = 0; int b = 5; RemplirVec1(a, b, k1, k2, Vec); cout << "Les lments du tableau sont: "; AfficheVec1(k1, k2, Vec); cout << endl; }

Le module geometrie.cpp
//**********************************************************// // Module contenant des fonctions de gomtrie. // // calcul de la surface et du primtre d'un rectangle, ... // // Date de cration: 28/09/2009 // // Date de la dernire mise jour: 29/09/2009 // // Auteurs : Cne Bouznad & Cne Bakhtouchi // //**********************************************************// //*********************************************// // Calcul de la surface d'un rectangle // // Sortie : la surface du rectangle // //*********************************************// double Surface(const double Longueur, // la longueur du rectangle const double Largeur) // la largeur du rectangle { return Longueur * Largeur; } //********************************************// // Calcul du primtre d'un rectangle // // Sortie : le primtre du rectangle // //********************************************// double Perimetre (const double Longueur, // la longueur du rectangle const double Largeur) // la largeur du rectangle { return (Longueur + Largeur) * 2; }

Le fichier geometrie.h
//********************************************************// // fichier entte du module Geometri.cpp contenant des //

13 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

// fonctions de gomtrie. calcul de la surface et // // du primtre d'un rectangle, ... // // Date de cration: 28/09/2009 // // Date de la dernire mise jour: 29/09/2009 // // Auteurs : Cne Bouznad & Cne Bakhtouchi // //********************************************************// //**************************************// // Calcul de la surface d'un rectangle // // Sortie : la surface du rectangle // //**************************************// double Surface(const double Longueur, // la longueur du rectangle const double Largeur); // la largeur du rectangle //**************************************// // Calcule du primtre d'un rectangle // // Sortie : le primtre du rectangle // //**************************************// double Perimetre (const double Longueur, // la longueur du rectangle const double Largeur); // la largeur du rectangle

Le module Vecteur.cpp
//***********************************************************// // Module contenant des fonctions de traitement des tableaux.// // affichage et lecture d'un tableau, ... // // Date de cration: 28/09/2009 // // Date de la dernire mise jour: 29/09/2009 // // Auteurs : Cne Bouznad & Cne Bakhtouchi // //***********************************************************// #include <iostream.h> #include <stdlib.h> #include <math.h> //*********************************************// // Affichage de la partie d'un tableu comprise // // entre deux indices k1 et k2 // // Sortie : aucune // //*********************************************// void AfficheVec1( const int k1, // indice de dbut de l'affichage const int k2, // indice de fin de l'affichage const double *Vec) // le tableau afficher { if (k2 < k1) { cout << "--AfficheVec1: paramtres non valide !--" << endl; exit (0); } for (int i = k1; i <= k2; i++) { cout << " " << Vec[i]; } } //**************************************************// // Remplissage de la partie d'un tableu comprise // // entre deux indices k1 et k2 par des valeurs // // alatoires comprises entre a et b // // Sortie : le vecteur Vec remplit // //**************************************************//

14 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

void RemplirVec1( const double a, // borne infrieur de l'intervalle const double b, // borne suprieur de l'intervalle const int k1, // indice de dbut du remplissage const int k2, // indice de fin du remplissage double *Vec) // le tableau remplir { if (k2 < k1) { cout << "--RemplirVec1: paramtres non valide !--" << endl; exit (0); } for (int i = k1; i <= k2; i++) { Vec[i] = a + (b - a) * rand()/RAND_MAX; } }

Le fichier Vecteur.h
//********************************************************// // fichier entte du module Vecteurs.cpp contenant des // // fonctions de traitement des tableaux. Affichage et // // lecture d'un tableau, ... // // Date de cration: 28/09/2009 // // Date de la dernire mise jour: 29/09/2009 // // Auteurs : Cne Bouznad & Cne Bakhtouchi // //********************************************************// //*********************************************// // Affichage de la partie d'un tableu comprise // // entre deux indices k1 et k2 // // Sortie : aucune // //*********************************************// void AfficheVec1( const int k1, // indice de dbut de l'affichage const int k2, // indice de fin de l'affichage const double *Vec); // le tableau afficher //**************************************************// // Remplissage de la partie d'un tableu comprise // // entre deux indices k1 et k2 par des valeurs // // alatoires comprises entre a et b // // Sortie : le vecteur Vec remplit // //**************************************************// void RemplirVec1( const double a, // borne infrieur de l'intervalle const double b, // borne suprieur de l'intervalle const int k1, // indice de dbut du remplissage const int k2, // indice de fin du remplissage double *Vec); // le tableau remplir

Rfrences
[1] Apache. The Jakarta Site Coding Standards, http://jakarta.apache.org/turbine/common/code-standards.html [2] Fabrizio Gotti "Normes de programmation en C#" College de Bois-de-Boulogne, 2009 [3] Franois Lemieux "Norme de programmation pour pages HTML" Atelier de gnie logiciel, Ecole Polytechnique de Montral, 2005 [4] GNU. Gnu Coding Standards, http://www.gnu.org/prep/standards_toc.html 15 PDF created with pdfFactory Pro trial version www.software-partners.co.uk

[5] Marc Frappier "Norme de documentation des programmes" Dpartement dinformatique, Facult des sciences, Universit de Sherbrooke, 2004 [6] Marc Truitt "Visual Basic.Net Programming Guidelines" Information Technology Services, Johnson County, Kansas, 2004 [7] Ph. Gabrini "Normes de programmation", Dpartement d'informatique, UQAM , 2005 [8] Professeurs et chargs de cours / Dpartement Dinformatique et de gnie logiciel "Normes de programmation" Facult des sciences et de gnie / Universit LAVAL, 2004 [9] Sun Microsystems "Java Code Conventions", 1997 [10] Sun Microsystems. Code Conventions for the JavaTM Programming Language, http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html [11] Yves Roy "Normes de programmation en C++-2002" Document conu dans le cadre du cours IFT-19946 Programmation oriente objet, 2002

16 PDF created with pdfFactory Pro trial version www.software-partners.co.uk