Retour au cours

style et bonnes pratiques en ruby

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 RuboCop pour 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_case pour les variables et les méthodes : ma_variable, def calculer_total
  • CamelCase pour les classes et les modules : class MaSuperClasse, module MonModule
  • SCREAMING_SNAKE_CASE pour 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 boucles for ou while.
  • Utilisez les modificateurs en fin de ligne pour les conditions simples : puts "Alerte" if temperature > 30
  • Utilisez unless pour é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

  1. Ajoutez-le à votre Gemfile (dans le groupe :development) :
    group :development do
      gem 'rubocop'
    end
  2. Installez-le : bundle install
  3. Lancez l’analyse : bundle exec rubocop
  4. Corrigez automatiquement : rubocop peut 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

  1. Installez RuboCop :

    • Créez un projet de test avec un Gemfile et ajoutez-y rubocop.
    • Lancez bundle install.
  2. Le code “non idiomatique” :

    • Créez un fichier mauvais_style.rb et 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
  3. 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 comment RuboCop l’a corrigé pour le rendre plus idiomatique.