-
La difficulté est de visualiser l’ensemble des rapports produits
-
Il peut être utile d’agréger les différentes mesures pour générer des indicateurs synthétiques
-
Ces indicateurs doivent ensuite être disponibles pour l’ensemble des membres du projet
-
Les réactions face à ces rapports doivent aussi être anticipées
-
Améliore la lisibilité du code source
-
le code est plus facile à comprendre
-
le code est plus facile à maintenir
-
-
On s’appuie généralement sur l’éditeur de texte et/ou un outil de vérification
|
Important
|
L’important est de choisir un style et de s’y tenir ! |
public static <T extends Comparable<? super T>> void f(List<T> l) {
int s=l.size();
int i,j;
for(i=0;i<s-1;++i)
{
for(j=0;j<s-1-i;++j){
if(l.get(j+1).compareTo(l.get(j))<0){
T t=l.get(j);
l.set(j,l.get(j+1));l.set(j+1,t);
}}}
}/**
* Tri la liste passée en paramètre en ordre croissant
* en respectant l'ordre naturel de ses éléments.
* Les éléments de la liste doivent implémenter
* l'interface <code>Comparable</code>.
* Cet méthode utilise un algorithme de tri a bulle.
*
* @param aList la liste à trier
*/
public static <T extends Comparable<? super T>> void bubbleSort(List<T> aList) {
int size = aList.size();
for (int i = 0; i < size - 1; ++i) {
for (int j = 0; j < size - 1 - i; ++j) {
if (aList.get(j+1).compareTo(aList.get(j)) < 0) { // compare les deux voisins
// échange les deux voisins
T tmp = aList.get(j);
aList.set(j, aList.get(j + 1));
aList.set(j + 1, tmp);
}}
}}| Plusieurs | Java | Python | C++ |
|---|---|---|---|
Google Style Guides, Google, 2014. Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin, Pearson, 2009. |
Java code conventions, SUN, 1999. Coding standards for Java, AmbySoft, 2007. Java Programming Style Guidelines, Fluxens. Java Language Coding Guidelines, Cay Horstmann, 2004. |
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices, Herb Sutter, Andrei Alexandrescu, Pearson, 2005. |
-
Structure et contenu d’un fichier source
-
Files longer than 2000 lines are cumbersome and should be avoided.
-
-
Conventions de nommage
-
Class names should be nouns, in mixed case with the first letter of each internal word capitalized.
-
-
Format et emplacement des commentaires
-
Short comments can appear on a single line indented to the level of the code that follows.
-
-
Indentation des lignes
-
Four spaces should be used as the unit of indentation.
-
-
Format des déclarations, des instructions et emplacement des espaces
-
Each line should contain at most one statement.
-
-
Quelques bonnes pratiques
-
Don’t make any instance or class variable public without good reason.
-
-
Des outils permettent de réaliser un audit des fichiers sources
-
Génèrent un rapport des violations des conventions de codage
-
Sont généralement configurables pour différentes conventions
| Java | Python |
|---|---|
Documenter un code source ([wikipedia w])
-
Un commentaire doit clarifier le code
-
la documentation du code doit permettre à une autre personne de mieux comprendre le code
-
-
Documentez pourquoi les choses sont faites et pas simplement ce qui est fait
-
ne paraphrasez pas le code
-
-
Rédigez des commentaires simples et concis
-
Écrivez la documentation avant d’écrire le code
-
permet de définir l’objectif en premier
-
-
Évitez les commentaires décoratifs (bannières, …)
-
ajoute peu de valeurs à la documentation
-
est une perte de temps
-
|
Important
|
Idéalement, un code bien écrit doit se suffire à lui-même, i.e. doit se lire (et se comprendre) facilement sans commentaire. |
Audit de code source ([wikipedia w]) et Analyse statique ([wikipedia w])
-
L'audit ou revue de code consiste à étudier attentivement un code source afin de détecter et de corriger des erreurs
-
L’objectif est d’améliorer la qualité du logiciel et l’expérience des développeurs
-
Peut prendre différentes formes
Fagan inspection est un processus formel pour l’audit de code
"par dessus l’épaule" un développeur suit en temps réel ce qu’un autre écrit
programmation par binôme deux développeurs travaillent de concert et échange leur rôle régulièrement (vient de eXtreme Programming (XP))
assisté par un outil s’appuie sur des outils pour une analyse systématique
-
Certaines erreurs se reproduisent fréquemment dans un fichier source (
;après unfor, …) -
La plupart de ces erreurs peuvent être recherchées de façon systématique
-
L'analyse statique permet d’obtenir des informations sur un programme sans l’exécuter
-
Elle est un bon complément aux tests
-
En général, elle n’a pas connaissance de ce que le programme doit faire (recherche de motifs généraux)
-
Des outils proposent un moteur ainsi qu’un ensemble de règles permettant de trouver ce type d’erreurs dans un fichier source
-
L’ensemble de règles peut éventuellement être modifiable
| Java | Shell |
|---|---|
-
Boucle récursive infinie
public MaClasse() { MaClasse m = new MaClasse(); }
-
Déréférencement d’une référence null
if (c == null && c.uneMethode()) //...
-
Auto affectation d’attribut
public MaClasse(String uneChaine) { this.chaine = chaine; }
-
Valeur de retour ignorée
String nom = //... nom.replace('/', '.');
| Correction |
le code ne fait clairement pas ce qui est attendu
|
| Mauvaise pratique |
le code ne respecte pas les bonnes pratiques
|
| Problème de sécurité |
le code est vulnérable à un usage malveillant
|
| Code suspect |
le code utilise des pratiques non usuelles |
| Performance |
le code est inefficace |
| Correction multithread |
il y a un problème de correction en environnement multithread |
-
Intégration au processus de développement
-
intégration à l’IDE, exécution comme les tests unitaires, …
-
-
Réglage de l’outil utilisé
-
éviter les faux positifs, paramétrer le niveau de détail, …
-
-
Réfléchir à la prise de décision
-
consultation des rapports, processus pour la correction du bogue, ne pas corriger le bogue, …
-