Retour au cours

les méthodes : définir et appeler

Objectifs

  • Définir une méthode personnalisée avec les mots-clés def et end.
  • Passer des arguments à une méthode pour la rendre flexible.
  • Comprendre le concept de retour implicite, une caractéristique clé de Ruby.
  • Définir des arguments avec des valeurs par défaut pour rendre les méthodes plus faciles à appeler.

Qu’est-ce qu’une méthode ?

Une méthode en Ruby est ce que l’on appelle une fonction dans de nombreux autres langages. C’est un bloc de code nommé que vous pouvez appeler à plusieurs reprises pour effectuer une tâche spécifique.

L’utilisation de méthodes est la pierre angulaire de l’écriture de code propre et maintenable, car elle permet d’éviter la répétition (principe DRY : Don’t Repeat Yourself).

Définition et Appel

On définit une méthode avec le mot-clé def, suivi du nom de la méthode, et on termine le bloc avec end. On l’appelle simplement en utilisant son nom.

# Définition de la méthode
def afficher_separator
  puts "--------------------"
end

# Appel de la méthode
puts "Section 1"
afficher_separator
puts "Section 2"
afficher_separator

Convention : Les noms de méthodes, comme les variables, utilisent le snake_case.

Passer des arguments

Pour qu’une méthode soit réutilisable, elle doit pouvoir accepter des paramètres (arguments). On les définit entre parenthèses après le nom de la méthode.

def saluer(nom)
  puts "Bonjour, #{nom} !"
end

saluer("Alice") # Affiche "Bonjour, Alice !"
saluer("Bob")   # Affiche "Bonjour, Bob !"

Arguments avec valeurs par défaut

Vous pouvez rendre un argument optionnel en lui donnant une valeur par défaut.

def saluer(nom = "invité")
  puts "Bonjour, #{nom} !"
end

saluer("Alice") # => "Bonjour, Alice !"
saluer          # => "Bonjour, invité !" (utilise la valeur par défaut)

Le retour de méthode : Le retour implicite

C’est l’un des concepts les plus importants et les plus élégants de Ruby. Une méthode retourne automatiquement la valeur de la dernière expression évaluée. Le mot-clé return est donc souvent inutile.

def additionner(a, b)
  # La dernière (et seule) expression est 'a + b'.
  # Sa valeur sera retournée.
  a + b
end

resultat = additionner(5, 3)
puts resultat # => 8

On n’utilise return que pour sortir prématurément d’une méthode, par exemple à l’intérieur d’une condition.

def diviser(a, b)
  if b == 0
    return "Erreur : division par zéro !"
  end
  
  a / b
end

Bonnes pratiques

  • Une méthode, une seule responsabilité. Une méthode doit faire une seule chose et la faire bien. Si une méthode devient trop longue, c’est le signe qu’il faut la découper.
  • Privilégiez le retour implicite. C’est le style idiomatique de Ruby.
  • Les parenthèses sont souvent optionnelles lors de l’appel d’une méthode. saluer "Alice" est équivalent à saluer("Alice"). La convention est de les omettre pour des appels simples, mais de les garder lorsque cela améliore la lisibilité, notamment avec des arguments multiples.

Exercices

  1. Calcul de surface :

    • Écrivez une méthode calculer_surface_rectangle qui prend une largeur et une hauteur en arguments.
    • La méthode doit retourner (implicitement) la surface calculée.
    • Appelez la méthode et affichez le résultat.
  2. Générateur de message :

    • Créez une méthode creer_email qui prend un destinataire et un objet de mail.
    • Elle doit retourner une chaîne de caractères formatée comme : À: [destinataire] | Objet: [objet].
  3. Méthode avec argument par défaut :

    • Reprenez la méthode creer_email.
    • Modifiez-la pour que l’argument objet ait la valeur par défaut “Pas d’objet”.
    • Testez la méthode en l’appelant avec un et deux arguments.