Upload
corbin-philippot
View
110
Download
2
Embed Size (px)
Citation preview
Style et conventions de programmation
v1.2
2Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Références
• Inspiré de Software Engineering
Roger S. Pressman Java Code Conventions
http://java.sun.com/docs/codeconv/ Java Programming Guidelines
générées par Rational Unified Process (RUP)
3Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Conventions LOG120
• Ces conventions vous sont imposées
• Le non respect peut entraîner la perte de points (jusqu'à 10%)
• Pour plus de détails / exemples, voirhttp://java.sun.com/docs/codeconv/
4Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Style de programmation
• Règles générales compréhension facile
• Conventions pour le code lecture plus rapide spécificités pour Java
5Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Compréhension du code source
• Code source lisible et compréhensible
int m = 754974721, N, t[1 << 22], a, *p, i, e = 1 << 22, j, s, b, c, U;
(tiré de http://www0.us.ioccc.org/2000/bellard.c)
Noeud suivant = courrant.suivant();
6Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Style de programmation
• Noms descriptifs variables, fonctions, types, ...
• Exécution visible conditions, boucles, ...
• Commentaires classe, fonction, instruction, ...
7Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Noms descriptifs
• Donnent suffisamment d'information contexte, terminologie adéquate au
domaine auditoire
• soi-même• programmeur de la même équipe• programmeur faisant la maintenance
8Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Noms descriptifs
• Ne pas trop utiliser d'abréviations : nombreDePointsParVecteurnbPtsV
• Essayer de s'en tenir à moins de 15 caractèresnombreDePointsParVecteur // 24pointsParVecteur // 16 Noms relatifs au contexte
9Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Noms descriptifs
• Éviter les noms qui se ressemblentdbSqldbSQLcaracteresLettrecaractereLettre
• Pas de "_" en début ou fin réservé pour le système
10Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Noms : très important !
• Classes première lettre de chaque mot en
majuscule :class ServeurImagesCouleur
• Interfaces comme les classes :interface ServeurDonnees
11Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Noms : très important !
• Méthodes première lettre de chaque mot en
majuscule, sauf la première du nom de la méthode :envoieImageCouleur();
12Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Noms : très important !
• accès aux champs getgetLength(), getColor()
setsetFile(), setEncriptionKey()
is, has ou can (valeur booléenne)isEnabled(), hasConnection(), canDial()
13Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Noms : très important !
• Variables première lettre de chaque mot en
majuscule, sauf la première du nom de la variable :int nombreDeCouleurs;
14Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Noms : très important !
• Constantes entièrement en majuscules, mots
séparés par soulignement ("_") :static final int MAX_COULEURS = 4096;
15Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Commentaires
• Conseil : les écrire avant d'écrire le code
• Décrire le "pourquoi" plutôt que le "quoi" le code et le contexte donnent déjà
une bonne idée de ce qui se passe
16Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Exemple
double S( ListOfDouble list ) {
double sum = 0.0;
ListOfDoubleIterator it = list.Begin();
while ( !it.IsAtEnd() ) {
sum += it.Value();
}
return( sum );
}corps de la fonction est court
nom de la fonction est peu descriptif
sous-bloc de laboucle est clair
17Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Formatage du code
• Pourquoi? lecture plus rapide facilite le travail en équipe, la
réutilisation du code• code d'une autre personne formaté
comme le sien• éléments toujours positionnés de la
même façon
18Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Formatage du code
• Peut être frustrant choix parfois arbitraires imposés (par l'employeur) change nos habitudes
• S'avère toutefois bénéfique pour l'équipe pour la maintenance du code
19Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Conventions pour fichiers
• Taille <= 2000 lignes <= 80 colonnes
• Extension des fichiers (Java) source : .java bytecode : .class
20Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Structure des fichiers
• Sections et ordre (Java) commentaires
• commentaires de début de fichier standard pour LOG120
énoncés package et import déclarations class et interface
21Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Structure d'une classe
• Ordre des éléments variables static variables d'instance constructeurs méthodes
• Pour chaque élément public, protected, puis private
22Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Indentation
• 4 espaces• Les <tabs> doivent être
exactement à tous les 8 espaces
23Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Changement de ligne
• Après une virgulemethodeA(param1, param2, param3, param4);
• Avant un opérateurresultat = termeA * termeB / pi;calcule = termeC * (resultat - termeLongAEcrire);
• Indentation au niveau courrant
24Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Déclarations
• Une par ligne bon : int jour;int mois;
mauvais :int jour, mois;
• Au début des bloques
25Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Déclarations
• Au début des bloquesvoid maMethode() { int monInt1 = 0;
if (condition) { int monInt2 = 0; .... }}
26Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Instructions
• Une par ligne bon :argv++;argc++;
moins bienargv++; argc++;a = (b = c) + 1; // 2 assignations
27Département de génie électrique
LOG120 : Style et conventions de programmationAutomne 2003
Instructions
• return, if, for, while, do-while,
switch, try-catch : voir conventions de Sun :
http://java.sun.com/docs/codeconv/