Mémo ruby – Syntaxe et convention


Je vais essayer ici de faire un petit tour d’horizon sur la manière d’utiliser ruby, la syntaxe à adopter ainsi que les conventions à respecter afin que le code que nous produisons, soit lisible et facilement compréhensible par l’ensemble des développeurs ruby. Une fois de plus je n’invente rien je me suis simplement documenté un peu partout sur la toile.
Les conventions quand a elles ont étaient écrite par Gauthier DELACROIX, elles sont traduites en plusieurs langues, une fois de plus afin d’harmoniser le code dans le monde entier.

Syntaxe et convention

Syntaxe

Tout d’abord, un petit rappel s’impose afin de produire un code clair, lisible et fonctionnel, il est absolument indispensable de respecter quelques règles simple de syntaxe.

 

Premièrement, utilisez l’UTF-8 comme encodage des fichiers source, ensuite il y à des règles de nomages :

 

  • Utilisez le snake_case pour les méthodes et les variables.
  • Utilisez le CamelCase pour les classes et les modules. (Gardez les acronymes comme HTTP, RFC, XML en majuscules.)
  • Utilisez le SCREAMING_SNAKE_CASE pour les autres constantes.

 

Ensuite les commentaires, il sont indispensable pour être compris des autres et pour se souvenir de ce que l’on a codé plusieurs mois à l’arrière.

 

  • Ecrivez du code auto-documenté.
  • Les commentaires doivent toujours être écrits en anglais pour éviter les problèmes liés aux caractères spéciaux.
  • La capitalisation et la ponctuation doivent être appliquées aux commentaires de plus d’un mot. Utilisez un espace après les virgules.
  • Evitez les comemntaires superflus.

 

Espacement

 

  • Utilisez deux espaces par niveau d’indentation. Pas de tabulation.
  • Utilisez des espaces autour des opérateurs, après les deux points, points-virgules et virgules, autour de { et devant }. L’espace est (généralement) sans importance pour l’interpréteur Ruby, mais l’utiliser correctement permet d’écrire facilement du code lisible.
    L’opérateur d’exposant est la seule exception:  e = M * c**2
  • Pas d’espace après (, [ ou devant ], ).
  • Utilisez des espaces autour de l’opérateur = lors de l’assignation de valeurs par défaut à des paramètres de méthode:
  • Ne mettez jamais d’espace entre le nom d’une méthode et la parenthèse d’ouverture.

 

Chaîne de caractère

  • Privilégiez l’interpolation de chaîne plutôt que la concaténation:
# mauvais·         
email_with_name = user.name + ' <' + user.email + '>'     

# bien 
email_with_name = "#{user.name} <#{user.email}>"
  • Pensez à entourer le code interpolé d’un espace. Cela permet de mieux distinguer le code de la chaîne de caractères.
"#{ user.last_name }, #{ user.first_name }"
  • Privilégiez les chaîne à guillemets simples lorsque vous n’utilisez pas d’interpolation ou de caractères spéciaux comme \t, \n, , etc.
# mauvais·         
name = "Bozhidar"

# bien
name = 'Bozhidar'

 

Conditions

  • Privilégiez l’opérateur ternaire (?:) plutôt que des structures if/then/else/end. C’est plus courant et visiblement plus compact.
  • Utilisez une seule expression par section dans un opérateur ternaire. Autrement dit, les opérateurs ternaires ne doivent pas être imbriqués. Privilégiez les structures if/else le cas échéant.
  • Privilégiez unless plutôt que if pour les conditions négatives (ou le contrôle de flux or).
  • N’utilisez jamais unless avec else. Réécrivez ces structures avec le cas positif en premier.
  • N’utilisez pas de parenthèses autour d’une condition if/unless/while, sauf si la condition contient une affectation.

 

Ne pas oublier

  • Indenter when au même niveau que case.
  • Passez des lignes entre les def pour diviser la méthode en paragraphes logiques.
    Alignez les paramètres de l’appel de méthode s’ils s’étalent sur plus d’une ligne.
  • Ajoutez des tirets bas aux grands expressions numériques pour améliorer leur lisibilité.
  • Evitez de laisser des espaces en fin de ligne.
  • Utilisez def avec des parenthèses quand il y a des arguments. Omettez les parenthèses quand la méthode n’accepte pas d’argument.

 

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *