• Aucun résultat trouvé

La chasse aux 7 péchés capitaux peut commencer

N/A
N/A
Protected

Academic year: 2022

Partager "La chasse aux 7 péchés capitaux peut commencer"

Copied!
37
0
0

Texte intégral

(1)

La chasse aux

7 péchés capitaux peut commencer

Par Freddy Mallet

freddy.mallet@sonarsource.com

Alpes JUG le lundi 13 décembre

(2)

Pour (re)trouver le droit chemin

(3)

Les 7 péchés capitaux

Péchés

Dette

technique

(4)

Les 7 péchés capitaux ?

Appliqués au code source

Duplications

Mauvaise distribution de la complexité

Mauvais Design

Pas de tests unitaires

Pas de respect des standards

Bugs potentiels

Pas ou trop de commentaire

(5)

Code dupliqué

Que choisir entre la peste et le choléra ?

(6)

Once and only once (Kent Beck)

Tout code dupliqué est une opportunité pour

élever le niveau d'abstraction et étoffer la richesse du design

(7)

Avant tout une histoire de bon sens

Avez-vous deux processus pour

Passer en production une nouvelle version applicative ?

Soumettre un appel d'offre ?

Recruter un collaborateur ?

(8)

Les 7 péchés capitaux ?

Appliqués au code source

Duplications

Mauvaise distribution de la complexité

Mauvais Design

Pas de tests unitaires

Pas de respect des standards

Bugs potentiels

Pas ou trop de commentaire

(9)

Mauvaise distribution de la complexité

Qu'est-ce que la complexité cyclomatique ?

(10)

Mauvaise distribution de la complexité

Vaut-il mieux :

1 méthode d'une complexité de 30

10 méthodes d'une complexité de 3

(11)

La complexité se gère à tous les étages

Méthode

Classe

Package

Module

Règle d'or :

Une méthode ou une classe n'est jamais trop petite

(12)

La complexité et le SRP

Une classe ou une méthode doit avoir une et une seule raison de changer

Si ce n'est pas le cas, il faut diviser (par

abstraction ou dissociation) pour mieux régner

SRP : Single Responsibility Principle

(13)

Les 7 péchés capitaux ?

Appliqués au code source

Duplications

Mauvaise distribution de la complexité

Mauvais Design

Pas de tests unitaires

Pas de respect des standards

Bugs potentiels

Pas ou trop de commentaire

(14)

Mauvais design

Quel package/classe est responsable de quoi ?

Comportant deux niveaux d'abstraction

(15)

Les couches d'architecture

Les cycles apparaissent comme le nez au milieu de figure

(16)

Les 7 péchés capitaux ?

Appliqués au code source

Duplications

Mauvaise distribution de la complexité

Mauvais Design

Pas de tests unitaires

Pas de respect des standards

Bugs potentiels

Pas ou trop de commentaire

(17)

Peu ou pas d'utilisation des tests unitaires

Merci d'ajouter un nouveau cas et

d'éviter toute régression bien évidemment...

(18)

Un code sans tests unitaires est soit

Du code jetable

Du code dont le coût d'ajout d'une

fonctionnalité et des régressions associées est sans importance

Du code d'une pure application CRUD (Create Read Update Delete)

Du code legacy dont la piètre qualité entraine un coût d'écriture et de maintenance des tests unitaires trop élevé

(19)

Les tests : avant tout une histoire de ROI

(20)

L'effet boule de neige du TDD

Raisonnement en terme de contrat

Donc en terme de responsabilité (SRP)

Expressivité du vocabulaire

Approche itérative et incrémentale au niveau le plus fin

Méthodes peu complexes

Linéarité des développements et donc meilleur prédictibilité des délais

(21)

Les 7 péchés capitaux ?

Appliqués au code source

Duplications

Mauvaise distribution de la complexité

Mauvais Design

Pas de tests unitaires

Pas de respect des standards

Bugs potentiels

Pas ou trop de commentaire

(22)

Non respect des standards

(23)

La gestion des exceptions

(24)

Nombre d'arguments d'une fonction

L'expressivité et la testabilité d'une fonction diminue exponentiellement à chaque ajout d'un argument

A partir de trois arguments, il est temps de se remettre en question

(25)

Taille verticale et horizontale d'un fichier

Quel traitement réservez-vous aux emails qui ne tiennent pas sur un écran ?

(26)

Règle d'indentation et de formatage

Il est aussi aisé de se mettre à lire du code

suivant un nouveau standard que de comprendre les panneaux de signalisation quand on débarque

dans un nouveau pays

(27)

Les 7 péchés capitaux ?

Appliqués au code source

Duplications

Mauvaise distribution de la complexité

Mauvais Design

Pas de tests unitaires

Pas de respect des standards

Bugs potentiels

Pas ou trop de commentaire

(28)

Bugs potentiels

if (listeners == null)

listeners.remove(listener);

Sun java : JDK1.6.0, b105, sun.awt.x11.XMSelection lines 243-244

(29)

Exemple

Valeur de retour ignorée

(30)

Exemple, suite

Null pointer

(31)

Les 7 péchés capitaux ?

Appliqués au code source

Duplications

Mauvaise distribution de la complexité

Mauvais Design

Pas de tests unitaires

Pas de respect des standards

Bugs potentiels

Pas ou trop de commentaires

(32)

Pas ou trop de commentaires

(33)

Expressivité du vocabulaire

Versus densité des commentaires

(34)

La javadoc : un commentaire particulier

L'utilisation doit être limitée aux API

La Javadoc s'adresse en priorité à des

consommateurs et non aux équipes en charge de la maintenance évolutive

(35)

Un commentaire doit être utile

Ou ne pas être

Pour amplifier l'importance d'une logique

Pour apporter une vision dynamique

Quelques anti-patterns

(36)

Les 7 péchés capitaux ?

Appliqués au code source

Duplications

Mauvaise distribution de la complexité

Mauvais Design

Pas de tests unitaires

Pas de respect des standards

Bugs potentiels

Pas ou trop de commentaires

(37)

Questions & Réponses

Merci

http://sonar.codehaus.org http://www.sonarsource.com

Références

Documents relatifs

Pendant les 2 heures qui suivent la projection, on dénombre les comportements agressifs de chacun des enfants des deux groupes.. L’existence d’une relation entre la longueur de la

C'est pour cela que nous allons créer la classe BMock qui implémente l'interface I mais qui soit si simple qu'il n'est plus la peine de la tester. Appartée sur

Il est possible de d´ efinir une fonction de tests qui poss` ede un ou plusieurs param` etres formels et de demander l’ex´ ecution de cette fonction, grˆ ace au d´

1) Test d’adéquation Dans cette section, nous présentons une méthode pour tester l’hypothèse que les fréquences observées pour les différentes catégories (classes)

5/36 01/2022 Denis Conan CSC4102 : Conception detaill´ ee et pr´ eparation des tests unitaires... 1.3 Pourquoi des

Testez et validez votre code en écrivant une fonction main permettant d’exécuter votre fonction (à l’aide de quelques valeurs de test).. Utilisez ces 2 fonctions afin de tester

Après un test de dépistage positif, les patients sont habituellement retirés de la population de dépistage (p. après un diagnostic de cancer ou de diabète) pour être placés

2/ Monter les boulons et dents à l'éxtrémité de chaque barre : ils vous aideront à positionner les pièces HB2 sur HB1 3/ Tracer sur les pièces HB1 les positions de HB2 selon l'axe