Écrire du code de qualité 1 : suivre le Pep8

Dans la programmation, les développeurs de logiciels ont inventé plusieurs façons de nommer les objets (variables, fonctions, modules, classes etc). Chacune de ces façons est plus adaptée à un langage plutôt qu’à un autre. La raison principale est qu’en programmation n’est pas permis de nommer (en général) les objets avec des espaces dans leur nom. Par exemple : “compteur de tours” n’est pas un nom permis, mais compteurDeTours l’est aussi bien que compteur_de_tours .

Parmi les différentes conventions de nommage nous trouvons :

  • “Camel Case” : Les noms d’objets qui se composent de plusieurs mots ont les toutes les initiales des mots en majuscules, et la première lettre en majuscule ou minuscule en dépendance du type d’objet. Cette convention est utilisée presque universellement en Java et en C++ par exemple. Ici, la variable pour décrire pour représenter la vitesse relative s’appellera “vitesseRelative”, et la classe Voiture Sportive “VoitureSportive”.
  • “Snake case” : Ici les mots sont séparés par des caractères de “souligné” en anglais “underscore”. Par exemple, la variable pour la vitesse relative sera “vitesse_relative” et la classe Voiture Sportive sera “voiture_sportive”. Python et perl suivent (pour la plupart) ce type de style.
  • “Kebab Case” : Ici on remplace les espaces avec des tirets “-“. Ce n’est pas toujours permis dans les langages de programmation car le “-” est presque toujours un opérateur du langage, mais il origine des noms plus lisibles quand on expose, par exemple, une route vers une ressource “http” comme “http:x.y.z/mon-article”.

Ces conventions toutes seules ne sont pas assez pour décrire un bon style de programmation. Pour Python, le guide du style recommandé est le PEP-8, et nous pouvons le résumer comme ça:

  • Espaces : Les opérateurs doivent être entourés d’espaces.
  • Lignes : Une ligne doit se limiter à 79 caractères.
  • Format du fichier : Indentation : 4 espaces. Pas de “tab”.
  • Docstrings : Comme décrit dans la PEP-257, On utilise toujours des triples guillemets.
  • Boucles et indices : Lettres seules, en minuscules.
  • Modules, noms de variables, fonctions et méthodes : Lettres minuscules + underscores.
  • (Pseudo) constantes : Lettres majuscules + underscores
  • Noms de classes : “Camel case”.

Il y a aussi des conventions pour ce qui concerne le nombre de lignes vides entre (par exemple) des fonctions. Il faut dire que Python fournit l’outil pycodestyle, que sert à vérifier le respect du PEP-8. Nous l’installons avec

python -m pip install pycodestyle

Et nous l’utilisons sur des fichiers python comme ça:

pycodestyle player.py

Il va nous donner le type d’erreur et la ligne pour chaque erreur, comme par exemple:

pycodestyle battlefield_image.py

battlefield_image.py:1:80: E501 line too long (92 > 79 characters)
battlefield_image.py:59:5: E303 too many blank lines (3)
battlefield_image.py:59:39: W291 trailing whitespace
battlefield_image.py:61:5: E301 expected 1 blank line, found 0
battlefield_image.py:75:5: E303 too many blank lines (3)
battlefield_image.py:76:5: E301 expected 1 blank line, found 0
battlefield_image.py:89:5: E303 too many blank lines (3)
battlefield_image.py:89:28: W291 trailing whitespace
battlefield_image.py:90:5: E301 expected 1 blank line, found 0
battlefield_image.py:124:5: E303 too many blank lines (3)
battlefield_image.py:135:5: E303 too many blank lines (3)
battlefield_image.py:136:5: E301 expected 1 blank line, found 0

Et voilà… bon amusement avec PEP-8!