Le design d'une API

Jeudi 22 septembre 2005 20:10 - Code

Il y a quelques jours, par je ne sais plus quelle suite de liens, je suis arrivé sur ce billet, PreCon: Designing Reusable Class Libraries Slides posted annonçant que les slides de différentes présentations données à la PDC (Microsoft Professional Developer Conference (une grosse conf surtout utile pour les développeurs utilisant des technos de Microsoft) (et où il y a eu une petite histoire autour d'une présentation de Mono qui a été refusée assez peu élégamment)).

Assez intéressants, ces slides. En tant qu'API, tout n'est pas rose chez Microsoft (loin de là) mais ces présentations montrent un peu la manière dont ils s'en soucient (assez bien, c'est quand même important pour eux d'avoir pleins de développeurs pour leur plateforme) et leurs conseils aux autres développeurs. Pour une bonne part, ces conseils concernent les outils de développement Microsoft, comment s'assurer que la complétion fonctionne bien avec Visual Studio, que le debugger affiche des infos utiles, etc. Mais il y a aussi des remarques générales à tirer.

Par exemple sur le slide 94, cette question:

Which of the following is the best way to start API design?

  1. Sit in front of a computer and start coding.
  2. Use class diagrams to discover main entities of the system.
  3. Create a list of most common scenarios and write code samples corresponding to the scenarios.

Pour laquelle je fonctionne avec la c) depuis un bail sans arriver à faire comprendre que c'est la meilleure pour arriver à une API pensée pour le confort de la personne qui aura à l'utiliser et non dans la facilité du créateur de l'API.

Truc parfois utile, chez Microsoft, c'est qu'il y a des milliers de personnes, ils peuvent demander (slide 61):

Review Scenario Samples

  • Solicit feedback on the scenario samples
  • Feedback from non-experts

Et les examples donnés de relecture sont intéressants à lire. « Quelle utilité à ce machin ? », « ce truc est redondant », « pourquoi ainsi alors que d'habitude on fait autrement ? », etc.

Ces slides valent vraiment la peine, beaucoup plus qu'un enième sur les design patterns en Java ou C#...