Qu’est-ce qu’un beau code ? Analyse de l'esthétique du code source et de sa compréhension

« Qu’est-ce qu’un beau code ? » Voilà une question qui obsède un rien Xavier de La Porte. Mais peut-être a-t-il trouvé la réponse dans une thèse sur l’esthétique du code rédigé par un étudiant nommé Pierre Depaz

Ecoutez le podcast: Esthétique du code | France Inter

Lorsque les programmeurs qualifient du code, ils expriment des valeurs esthétiques liées à la clarté, à la propreté, à l’élégance, à la simplicité et à la fonctionnalité. Bien qu’il existe des variations selon les communautés de programmation (développeurs de logiciels, hackers, scientifiques, poètes du code), ces valeurs esthétiques sont généralement partagées, mais avec des priorités différentes selon les pratiques.

Voici les valeurs esthétiques clés exprimées par les programmeurs lorsqu’ils qualifient du code :

  • Clarté: Le code doit être facile à lire et à comprendre, tant pour les humains que pour les machines. Un code clair minimise les efforts cognitifs nécessaires pour construire un modèle mental du programme.

  • Propreté: Le code doit être bien organisé, structuré et exempt d’éléments superflus. Un code propre facilite la maintenance, la modification et la réutilisation.

  • Élégance: Le code doit exprimer des idées complexes de manière concise et précise. L’élégance est atteinte en utilisant un minimum de constructions syntaxiques et ontologiques tout en conservant l’expressivité.

  • Simplicité: Le code doit être aussi simple que possible tout en remplissant sa fonction prévue. La simplicité réduit la complexité cognitive et facilite le débogage.

  • Fonctionnalité: Le code doit fonctionner correctement et efficacement. Les valeurs esthétiques sont toujours subordonnées à la fonctionnalité, un code non fonctionnel ne pouvant être considéré comme beau.

Ces valeurs esthétiques sont souvent exprimées à travers des métaphores empruntées à d’autres domaines tels que la littérature, l’architecture et les mathématiques. Par exemple, les programmeurs peuvent parler de code « lisible », « bien structuré » ou « élégant », reflétant des valeurs esthétiques traditionnellement associées à ces domaines.

Les valeurs esthétiques dans le code ne sont pas seulement une question de préférence personnelle, mais jouent un rôle fonctionnel en facilitant la compréhension, la collaboration et la maintenance des logiciels. Un code esthétiquement plaisant est un code qui est non seulement fonctionnel, mais aussi une expression claire, concise et élégante de la pensée du programmeur.

Voici le cadre proposé par John Cayley pour analyser le code source à différents niveaux, qui distingue trois niveaux de lecture du code source :

  • Structure : Il s’agit du niveau le plus élevé, qui concerne l’organisation générale du code. Cela inclut la façon dont le code est divisé en fichiers et dossiers, ainsi que la façon dont les différentes parties du code sont liées entre elles. Les aspects esthétiques de la structure incluent la clarté, la cohérence et la distance conceptuelle, ce qui signifie que les éléments liés devraient être proches l’un de l’autre dans le code.

  • Syntaxe : Ce niveau se concentre sur les règles et les conventions utilisées pour écrire du code dans un langage de programmation spécifique. Il s’agit des éléments tels que l’indentation, les conventions de nommage et l’utilisation de commentaires. Une syntaxe bien écrite est essentielle à la lisibilité et à la compréhension du code. Les aspects esthétiques de la syntaxe incluent la cohérence, la concision et la lisibilité.

  • Vocabulaire : C’est le niveau le plus bas, qui concerne les mots et les symboles utilisés dans le code. Dans le contexte de la programmation, le vocabulaire fait référence aux noms de variables, de fonctions et d’autres éléments du code. Le choix du vocabulaire peut avoir un impact significatif sur la lisibilité et la clarté du code.

Et pour vous, en priorité, les qualités d’un code doivent être :

  • Clarté
  • Propreté
  • Élégance
  • Simplicité
  • Fonctionnalité
0 votant

Voir aussi :