Objectifs
- Synthétiser les conventions de style qui rendent le code Ruby si lisible.
- Adopter une philosophie de code “Ruby-esque”.
- Découvrir l’outil
RuboCoppour analyser et formater automatiquement votre code.
Écrire du code qui fonctionne est une chose. Écrire du code que d’autres (y compris votre futur vous) peuvent lire et comprendre facilement en est une autre. La communauté Ruby attache une importance énorme à la clarté et à la cohérence du style.
Les conventions clés (“The Ruby Way”)
1. Conventions de nommage
snake_casepour les variables et les méthodes :ma_variable,def calculer_totalCamelCasepour les classes et les modules :class MaSuperClasse,module MonModuleSCREAMING_SNAKE_CASEpour les constantes :MAX_CONNEXIONS = 100- Prédicats en
?: Les méthodes qui retournent un booléen (true/false) doivent se terminer par un?.[].empty?,user.is_admin? - Méthodes “dangereuses” en
!: Les méthodes qui modifient l’objet sur lequel elles sont appelées (au lieu d’en retourner une copie) se terminent souvent par un!.ma_chaine.upcase!
2. Syntaxe et Lisibilité
- Privilégiez les itérateurs (
.each,.map…) aux bouclesforouwhile. - Utilisez les modificateurs en fin de ligne pour les conditions simples :
puts "Alerte" if temperature > 30 - Utilisez
unlesspour éviter les négations :puts "Action requise" unless is_valid(préférable àif !is_valid). - Privilégiez l’interpolation
#{...}à la concaténation avec+. - Utilisez des symboles (
:ma_cle) pour les clés de Hash. - Les parenthèses sont optionnelles, mais utilisez-les si cela rend l’appel d’une méthode plus clair.
3. Organisation du code
- Utilisez Bundler pour tous vos projets.
- Découpez votre code en petites classes et méthodes ayant une seule responsabilité.
- Préférez la composition et les mixins à l’héritage. L’héritage ne doit être utilisé que pour des relations “est un” évidentes.
RuboCop : Le gardien du style
RuboCop est une gem qui est à la fois un linter (analyseur de style) et un formateur de code. C’est l’outil de référence de la communauté pour faire respecter le Ruby Style Guide.
Il analyse votre code et vous signale des centaines de “délits” potentiels, allant des conventions de nommage aux complexités de code inutiles.
Utilisation
- Ajoutez-le à votre
Gemfile(dans le groupe:development) :group :development do gem 'rubocop' end - Installez-le :
bundle install - Lancez l’analyse :
bundle exec rubocop - Corrigez automatiquement :
rubocoppeut corriger lui-même de nombreuses erreurs.bundle exec rubocop -A
Utiliser RuboCop est l’un des meilleurs moyens d’apprendre les conventions et d’améliorer rapidement la qualité de votre code.
Bonnes pratiques résumées
- Écrivez du code en pensant à la personne qui le lira après vous.
- Suivez les conventions de la communauté.
- Utilisez les outils (comme
RuboCop) pour automatiser le respect de ces conventions. - Testez votre code.
Exercices
-
Installez RuboCop :
- Créez un projet de test avec un
Gemfileet ajoutez-yrubocop. - Lancez
bundle install.
- Créez un projet de test avec un
-
Le code “non idiomatique” :
- Créez un fichier
mauvais_style.rbet mettez-y du code qui viole intentionnellement plusieurs conventions :# mauvais_style.rb MaVariable = "hello" # Mauvais nom de variable if !MaVariable.empty? then puts MaVariable end # if ! et then for i in [1,2,3] # Boucle for puts i end
- Créez un fichier
-
Analyse et correction :
- Lancez
bundle exec rubocop mauvais_style.rb. Observez la liste des “offenses” qu’il détecte. - Maintenant, lancez
bundle exec rubocop -A mauvais_style.rb. - Regardez le contenu du fichier
mauvais_style.rb. Observez commentRuboCopl’a corrigé pour le rendre plus idiomatique.
- Lancez