The Design of Everyday APIs

Clean Code
Nov. 11, 2024
photo_elie
Auteur
Elie Terrien
La conception d'API orientées objet vise à créer des interfaces intuitives, flexibles et simples pour améliorer l'expérience des développeurs et faciliter leur intégration dans divers systèmes.

Les API (Interfaces de Programmation d'Applications) sont des éléments essentiels du développement logiciel, servant de pont de communication entre différentes applications. Dans son exposé, Lynn Root, ingénieure expérimentée chez Spotify, aborde l’art de concevoir des API orientées objet, intuitives, flexibles et simples pour les utilisateurs. S’inspirant de l’ouvrage de Don Norman, "The Design of Everyday Things", Root souligne l’importance de placer l'utilisateur au centre de la conception des API pour améliorer leur expérience.

La Conception comme Outil de Communication

Root souligne que la bonne conception, qu’il s’agisse d’objets physiques ou d’interfaces numériques, doit communiquer efficacement avec l’utilisateur. Dans le cas des API, la conception doit clarifier ses fonctionnalités aux développeurs qui les utiliseront. Pour ce faire, elle s’appuie sur deux caractéristiques principales tirées des principes de Don Norman sur la bonne conception : la découvrabilité et la compréhension.

Découvrabilité : Les utilisateurs peuvent-ils comprendre quelles actions sont possibles ? Root divise cette idée en cinq éléments clés :

Compréhension : L’utilisation du produit est-elle facile à appréhender ? La compréhension se développe par un modèle conceptuel, une explication simplifiée de la manière dont quelque chose fonctionne.

Trois Principes Fondamentaux de la Conception des API

Root présente trois principes pour créer des API orientées objet qui favorisent l'empathie utilisateur, la simplicité d’utilisation et la fiabilité.

1. Des API Intuitives

Une API intuitive permet aux utilisateurs de la "ressentir" sans avoir besoin de consulter en permanence la documentation. Root insiste sur l'importance de nommer les fonctions et les méthodes en lien avec le domaine de l’utilisateur. Une API intuitive minimise la complexité inutile, rendant plus facile la prédiction et la compréhension des résultats. Par exemple :

  • Nommer : Utiliser des termes familiers au domaine, tels que "publier" et "consommer" dans des files de messages, plutôt que des termes génériques comme "ajouter" et "obtenir".
  • Mappages : Aligner les noms des fonctions avec les actions courantes pour offrir une compréhension immédiate.
  • Cohérence : Assurer la cohérence dans les conventions de nommage et la logique pour réduire la confusion.

2. Des API Flexibles

Root prône des API flexibles capables de répondre à des besoins utilisateurs basiques et complexes. La flexibilité dans les API signifie :

  • Valeurs par défaut : Fournir des valeurs par défaut sûres, telles que les délais d’attente et les tentatives de réessai, pour éviter à l’utilisateur de régler manuellement chaque paramètre.
  • Support des arguments facultatifs : Permettre aux utilisateurs d’ajouter ou d’omettre certains paramètres au besoin, réduisant la nécessité de répéter les actions.
  • Gestion des erreurs : Proposer des messages d’erreur clairs qui informent l’utilisateur du problème au lieu de laisser des erreurs ambiguës non traitées.

3. Des API Simples

La simplicité est cruciale pour réduire la charge cognitive de l’utilisateur. Root illustre plusieurs façons de simplifier les API :

  • Limiter les arguments positionnels : Minimiser le nombre d'arguments que les utilisateurs doivent se souvenir en définissant des valeurs par défaut pour les options fréquemment utilisées.
  • Fonctions Composables : Concevoir des fonctions qui renvoient des types de données compatibles avec d’autres fonctions, permettant aux utilisateurs de chaîner les opérations et de simplifier leur code.
  • Aligner avec les Idiomes du Langage : Adopter des idiomes spécifiques au langage. Par exemple, en Python, utiliser des itérateurs lorsqu’il est approprié, pour que les utilisateurs puissent utiliser des boucles “for” simples au lieu de créer des boucles “while” complexes.

Application Pratique : The Chaos Queue

Dans l’exposé, Root utilise un exemple d’API "The Chaos Queue" pour démontrer ces principes. Initialement, l’API était simple mais nécessitait des améliorations pour la rendre plus conviviale. Par itération et en appliquant ces principes, Root montre comment un développeur peut réduire les lignes de code et améliorer la lisibilité et la fonctionnalité de l’API. Les modifications clés comprenaient :

  • Renommer les fonctions pour correspondre au jargon du domaine.
  • Introduire des classes distinctes pour les actions de publication et de souscription.
  • Intégrer des idiomes Python, comme les gestionnaires de contexte, pour gérer automatiquement la libération des ressources.

Conclusion

L’approche de Root en matière de conception d'API souligne l'importance de se placer du point de vue de l'utilisateur. En se concentrant sur l’intuitivité, la flexibilité et la simplicité, les développeurs peuvent créer des API qui ne sont pas seulement fonctionnelles mais aussi agréables à utiliser. Le but ultime de la conception d'API devrait être de créer des outils qui s'intègrent parfaitement dans les flux de travail des utilisateurs, minimisant les frictions et maximisant la productivité.

Lien vers la conférence

Return to blog

Recevez notre newsletter