Complexité et principe de moindre surprise

Un des thèmes de Robust Python est la complexité logicielle et comment y apporter des solutions.

C'est quelque chose qui entre en résonance avec A Philosophy of Software Design :

Les logiciels sont intrinsèquement plus complexes que les systèmes physiques.

En amont de la construction, il n'est pas possible de visualiser l'entièreté du design d'un logiciel pour en comprendre toutes les implications.

Les types de complexité et le principe de moindre surprise sont deux éléments qui viennent compléter mes notes sur le sujet.

Types de complexité

Il existe deux types de complexité :

  1. la complexité nécessaire (necessary complexity)
    • inhérente au domaine
  2. la complexité accidentelle (accidental complexity)
    • conséquence de choix de développement non pertinents

Principe de moindre surprise

La surprise vient de la complexité.

Le principe de moindre surprise (Law of Least Surprise ou Law of Least Astonishment) consiste à éviter à un utilisateur, de la façon la plus simple possible, toutes les (mauvaises) surprises.

Appliqué à l'écriture du code, il devrait permettre à quelqu'un qui lit le code de ne presque jamais être surpris par le comportement ou l'implémentation.

Lorsqu'il est surpris, il devrait y avoir un commentaire près du code pour expliquer pourquoi il en est ainsi.

La communication de l'intention est primordiale pour ne pas surprendre les futurs collaborateurs et leur faire perdre du temps.

Avant 20 ans de blog Après Homo detritus

Tag Kemar Joint