"If we all checked-in our code a little cleaner than we checked it out, the code simply could not rot."
"Leave the campground cleaner that you found it."
"If we all checked-in our code a little cleaner than we checked it out, the code simply could not rot."
A chaque intervention sur le code :
Améliorer sa lisibilité
Corriger les "code smells"
Si vous y passez trop de temps
Si vous commencez un gros refactoring
Donner un nom explicite
Éviter la lourdeur
Utiliser une convention de nommage
Plus de 4 lettres
Exception : i,j,k sont tolérés pour l’index d’une boucle
Ne pas mentionner le type
// Avant
void statement(List<Video> list) {
for(int i; i < list.size(); i++) {
append(list.get(i).price); // we add each video price into the report
}
}
// Après
void processVideosInReport(Video[] videos) {
for (Video video: videos) {
addToReport(video.price);
}
}
// Avant
List<Video> videoList = getVideos();
boolean checkedBool = true;
// Après
List<Video> videos = getVideos();
boolean isChecked = true;
VideoRepository video_repository = new VideoRepository();
VideoRepository reportGenerator = new Report_Generator();
reportGenerator.generate_report(video_repository.fetch_videos());
les mauvaises pratiques
le code redondant
Avoir des valeurs en dur
Avoir du code mort
Avoir du code dupliqué
Avoir du code trop long
if(status == 400) {
return "REQ_ERR"
}
return "REQ_OK"
if(status == STATUS_REQUEST_ERROR) {
return CODE_ERROR
}
return CODE_SUCCESS
Les déplacer dans :
une constante
un fichier de configuration
un fichier de traduction
on supprime ! (au pire il y a Git)
moins il y a de code
plus c’est facile à maintenir 😈
On applique la règle des 3 fois
⇒ et on factorise
pas plus de deux indentations
pas plus de 20 lignes
⇒ découper en sous-fonctions
votre IDE
les linters
les analyseurs de code
renommer un token
extraire une méthode
"inliner" un token
éliminer les mauvaises pratiques
forcer les conventions
eslint
tslint
analyse plus fine du code
détection de duplication
détection de problèmes de sécurité
SonarQube
Exemples de style guides
Mozilla (js) [1]
Airbnb (js) [2]
Google (java) [3]
Ressources sur les code smells
un extrait inspiré de Clean Code [1]
un article inspirant du blog JBrains.ca [2]
liste de code smells [3]