2010-04-12 3 views
85

Quelles sont les lignes directrices et les meilleures pratiques que je peux respecter lors de la conception d'une API? Au strict minimum, je sais qu'une API devrait être facile à utiliser et flexible. Malheureusement, ces termes peuvent être plutôt subjectifs, donc je cherchais des lignes directrices concrètes concernant la conception d'un API.Les meilleures pratiques et lignes directrices pour la conception d'une API

+0

Quelle langue/plateforme? C#? C++? Java? SAVON? DU REPOS? – bobbymcr

+1

Il doit y avoir des ressources internet sur ce ... par exemple http://chaos.troll.no/~shausman/api-design/api-design.pdf – WhirlWind

+1

+1 Bonne question. Je suis ennuyé par les «frameworks» qui contraignent la conception de votre application/qui ne sont pas intuitifs. – Gishu

Répondre

55

J'ai trouvé ce qui suit pour être vaut une montre Joshua Bloch - How To Design A Good API and Why it Matters

Les exemples sont en Java bien que vous puissiez toujours faire des parallèles. Puisque vous n'avez pas mentionné une technologie spécifique; Je suppose que vous ne voulez pas de solutions de niche.

+11

[Même vidéo à une résolution supérieure (YouTube)] (http://www.youtube.com/watch?v=heh4OeB9A-c) –

+0

[Architecture API REST - Meilleures pratiques] (http://dasunhegoda.com/rest- api-architecture-best-practices/1049 /) – Techie

30

Comme quelqu'un qui a consommer des tonnes des API ...

S'il vous plaît écrire votre API de manière cohérente:

  1. Désignation cohérente dans l'API elle-même. Utilisez des verbes, des noms, des mots-clés dans exactement le même style.

  2. Conformément à l'environnement cible, il sera utilisé. Si .NET, puis consultez les directives de nommage de Microsoft.

  3. concepts cohérents. Modèle d'usine? Modèle Builder Méthodes statiques? Interfaces? Choisissez-en un et respectez-le. VRAIMENT. Il n'y a pas de petite exception à la règle. Il va sortir comme un gros pouce endolori. Plus d'une exception? Votre API est de plus en plus amateur.

En voici une autre: Spécificité.

  1. Les classes de base que je peux mettre en œuvre, si vous choisissez de les fournir, devraient avoir des fonctions peu et bien définies pour mettre en œuvre. Ne me dites pas "GetData()" renvoie un "object []" et attendez que je l'implémente, comprenez pourquoi je dois le convertir en une chaîne [], puis déboguez pourquoi il est appelé 20 fois. Il est préférable d'avoir DataPoint [] GetChartData(), string [] GetLabelData(), etc. et laissez-moi choisir ceux que je devrais implémenter.

  2. S'il vous plaît ne soyez pas stupide avec des noms: PostRenderColorWheelModifyHSVBaseHandler. Vous pouvez souvent refactoriser des choses super spécifiques en un nom plus générique + paramètres.

  3. Les paramètres de chaîne sont un non-non! Utilisez les énumérations. Je ne veux pas utiliser un gestionnaire comme

    PostRenderHandler ("ColorWheel", "HSV", someDelegate);

Je préfère comme un ENUM je peux étudier:

PostRenderHandler(ModuleType.ColorWheel, Options.ColorWheelHSV, someDelegate); 

Man, je pourrais continuer ... Le pouvoir de ce type Josh Bloch - API bien écrit peut être vraiment génial ... les mauvais peuvent être vraiment douloureux.

+1

Merci pour vos commentaires! Ouais, le gars de Joshua Bloch est génial. Je ne suis pas du tout surpris de voir son nom apparaître. Je crois qu'il a écrit le livre de Java efficace. –

+1

Oui, il est l'auteur. Le livre est très, très bien. Ces règles et recommandations semblent être la première partie du "code propre". – Bakudan

Questions connexes