Conventions de Codage

afternoonhandsomelyΛογισμικό & κατασκευή λογ/κού

17 Νοε 2012 (πριν από 4 χρόνια και 11 μήνες)

320 εμφανίσεις

Conventions de codage


Toutes les conventions ci
-
dessous sont très fortement inspirées de celles de Sun. J’ai essayé de simplifier au
maximum et de ne s’attarder que sur les choses vraiment importantes.

Ces conventions devront être suivies afin de permettr
e une maintenance beaucoup plus aisée. Une personne se
chargera de vérifier de temps à autre dans les fichiers source si ces conventions sont bien suivies. Si rien n’est suivi,
les sources seront renvoyées et devront être modifiées.

Une fois que tout le mo
nde sera habitué, le travail sera beaucoup plus facile, et le code se relira bien plus facilement.

I.

Organisation dans les fichiers


Tout fichier .java doit s’organiser de la manière suivante

:



Un commentaire général donnant le nom de la classe/interface imp
lémentée, la
version

et si des tests
ont été effectués.


/**


* Nom de la classe


*


* Version du fichier


*


* Tests effectués


*/




Le nom du package auquel appartient la classe puis les imports nécessaires.




Déclaration de la classe ou de l’interface

o

C
ommentaire donnant la description de la classe et les auteurs

o

Entête de la classe/interface

o

Attributs statiques (private | protected | public)

o

Attributs (private | protected | public)

o

Construteur

o

Getters & Setters

o

Méthodes

o

Méthodes
redéfinies

(notamment to
String() et les méthodes des interfaces implémentées)

II.

Indentation




Une tabulation équivaut à un niveau d’indentation, et cela équivaut à 4 espaces.




Une ligne fait au maximum 80 caractères si possible. Lorsqu’on découpe un ligne bien veiller à couper et
à
aligner aux bons endroits. Exemple :


if ((condition1) && condition2)


|| (condition3 && condition4)


||!(condition5 && condition5)) {


traitement ();

}



Dans cet exemple il faut bien veiller à ce que les autres conditions du ‘if’ ne soie
nt pas alignées avec le traitement en
dessous.

III.

Commentaires




Les commentaires du code se font entre "/*…*/" ou après "//…" Ils sont utilisés pour décrire ce que fait
le code, ou à quoi sert une variable, etc…

o

Un commentaire ne se met pas sur une ligne où i
l y a déjà du code sauf si ce commentaire est
vraiment petit.

o

Un bloc de code se fait de la manière suivante

:


/*


* Comment


*/




En revanche les commentaires entre "/**…*/" sont uniquement destinés à la Javadoc, je ne détaillerai
pas la javadoc dans ce d
ocument, mais sous NetBeans, lorsqu’on tape "/**" juste avant l’entête d’une
méthode, il nous génère le bloc avec toutes les balises nécessaires.

IV.

Déclarations




Ne toujours mettre qu’une seule déclaration par ligne, même si le type est le même.




C’est encor
e mieux d’aligner les noms des variables après le type avec une tabulation. Exemple

:


private String nom;

private int age;




Les déclaration
s

se font toujours en début de block (au début de la classe pour les attributs et au début
de la méthodes pour
les variables). Une seule exception

: pour l’indice de la boucle
for
.


f
or

(int i=0

; i<max

; i++) {


...

}




Initialiser si possible à la déclaration.

V.

Instructions




Une seule instruction par ligne dans tous les cas

! A part pour les corps des getters et

setters simples,
pour lesquels on n’a pas besoin d’avoir une bonne lisibilité. Exemple

:


public BufferedWriter getWriter() { return this.writer; }

public void setWriter(BufferedWriter writer) { this.writer = writer; }




if else if else :


if (condition1)
{


traitement1();

} else if (condition2) {


traitement2();

} else


traitement3();

}




for

:

o

for
(
i
=

0 ;
i
<

max ; i++
)

{


...

}

o

for (
i
nit

;
cond

;
finBoucle
);




Pour une boucle qui ne fait rien de plus



w
hile et do while

o

while
(condition) {



...

}

o

do {


traitement ();

} while (condition);




s
witch

s
witch (condition) {

c
ase 1:


t
raitement1();


/* falls through */




Toujours mettre ce commentaire s’il n’y a pas de break

c
ase 2:


t
raitement2();


b
reak;


c
ase 3:


t
raitement3();


b
reak;


default:






Toujours mettre le block default


traitementDefault();


break;




try
-
catch

try {


traitement();

} catch (ExceptionClass e) {


traitementErreur();

}

Pour le traitement

des
exceptions, si on affiche quelque chose, il faut

toujours ajouter au moins le
message de l’exception à l’aide de

:


System.out.println("erreur

: " + e.getMessage());

VI.

Aération du code




Ne pas hésiter à sauter des lignes entres les méthodes, entre la déclaration des variables et le traitement
par exemple.




Gestion des espaces

:

o

Toujours mettre en espace entre un mot clé et une parenthèse, et juste avant le crochet
ouvrant

:

while (true) {


...

}

Mais cet espace n’apparait pas entre l’appel d’une méthode et sa parenthèse, cela permet de
distinguer les mé
thodes des mots clé.

:

monObjet.toString()

;


o

Espace après une virgule. A
vant et après le

point
-
virgule

du for.

o

Toujours espacer les opérations binaires (à part ++ et
--
)

:

e = 7 + i;

i++;

VII.

Nommage




Classes

: Utiliser des noms, commencer par une majuscule
et remettre une majuscule pour chaque
début de mot.

class Personne;

class EnseignantChercheur;



Interfaces

: Même conventions que pour les classes, mais utiliser si possible un I devant

:

interface IChercheur;



Méthodes

: Utiliser des verbes, commencer par u
ne minuscule, puis mettre des majuscules pour chaque
début de mot.

getNom();

toString();



Variables

: Utiliser des mots courts et SIGNIFICATIFS afin de faciliter la compréhension. Commencer par
une minuscule puis des majuscules à chaque début de mot. Aligne
r les noms à la déclaration.

int i;

Personne persTest;

float longueur;



Constantes

: Toujours en MAJUSCULES avec des ‘_’ entre les mots et initialisées à leur déclaration.

int MIN_HAUTEUR = 1;

int MAX_HAUTEUR = 50;


VIII.

Petits conseils




Ne pas
aller à la ligne pour ouvrir un crochet.



Lorsqu’on se sert d’un attribut d’une classe, toujours utiliser le mot clé this

devant.



Ne pas hésiter à mettre des parenthèses même si elles ne sont pas obligatoires.



Ne pas oublier le mot clé
@Override

pour toutes

les méthodes redéfinies.

(Le mettre sur la ligne avant
la déclaration sauf si la méthode ne fait rien.

@Override

public void windowClosing (WindowEvent we)

{


System.out.println ("Fin de l'application");


System.exit (0);

}

@Override public void win
dowOpened (WindowEvent we) {}

...



Si possible, séparer toutes les sections d’une classe à l’aide de commentaires

:

// ATTRIBUTS //

...

// CONSTRUCTEURS //

...

// GETTERS & SETTERS //

...

// METHODES //

...

// METHODES REDEFINIES //

...

// METHODES DE L’INT
ERFACE ActionListener //

...