2010-04-12 12 views
85

Welche Richtlinien und Best Practices kann ich beim Entwerfen einer API beachten? Auf das absolute Minimum, ich weiß, dass eine API einfach zu bedienen und flexibel sein sollte. Leider können diese Begriffe eher subjektiv sein, daher suchte ich nach konkreten Richtlinien für gutes API-Design.Best Practices und Richtlinien zum Entwerfen einer API

+0

Welche Sprache/Plattform? C#? C++? Java? SEIFE? SICH AUSRUHEN? – bobbymcr

+1

Hier muss es Internetquellen geben ... zum Beispiel http://chaos.troll.no/~shausman/api-design/api-design.pdf – WhirlWind

+1

+1 Schöne Frage. Ich bin verärgert über "Frameworks", die Ihr Anwendungsdesign einschränken/nicht intuitiv sind. – Gishu

Antwort

55

Ich fand die folgenden sein eine Uhr wert Joshua Bloch - How To Design A Good API and Why it Matters

Die Beispiele sind zwar in Java, aber immer noch können Sie Parallelen ziehen. Da du eine bestimmte Technologie nicht erwähnt hast; Ich nehme an, Sie wollen keine Nischenlösungen.

+11

[Gleiches Video mit höherer Auflösung (YouTube)] (http://www.youtube.com/watch?v=heh4OeB9A-c) –

+0

[REST API-Architektur - Best Practices] (http://dasunhegoda.com/rest- api-architecture-best-practices/1049 /) – Techie

10

Es gibt eine good presentation zu diesem Thema von Joshua Bloch. Die Präsentation verwendet Java, aber die Ideen sind sprachunabhängig. Another source (pdf) für einen schnellen Überblick.

30

Als jemand, der Tonnen zu konsumieren hat von APIs ...

Bitte schreiben Sie Ihre API in einer konsistenten Art und Weise:

  1. Konsequente Benennung innerhalb der API selbst. Verwenden Sie Verben, Substantive, Schlüsselwörter in genau dem gleichen Stil.

  2. In Übereinstimmung mit der Zielumgebung wird es verwendet werden. Wenn .NET, dann konsultieren Sie Microsofts Benennungsrichtlinien.

  3. Konsequente Konzepte. Fabrikmuster? Erbauermuster? Statische Methoden? Schnittstellen? Wählen Sie einfach einen aus und bleiben Sie dabei. JA WIRKLICH. Es gibt keine kleine Ausnahme von der Regel. Es wird als großer wunde Daumen hervorstehen. Mehr als 1 Ausnahme? Deine API ist mehr und mehr amateurhaft.

Hier ist noch eins: Spezifität.

  1. Basisklassen, die ich implementieren kann, wenn Sie sie bereitstellen möchten, sollten wenige und klar definierte Funktionen implementieren. Sag mir nicht "GetData()" gibt ein "object []" zurück und erwartet dann, dass ich es implementiere, finde heraus, warum ich es in einen String [] umwandeln muss, und debugge dann, warum es 20 Mal aufgerufen wird. Es ist viel besser, DataPoint [] GetChartData(), string [] GetLabelData(), etc. und lassen Sie mich wählen, welche ich implementieren sollte.

  2. Bitte nicht albern-lange mit Namen: PostRenderColorWheelModifyHSVBaseHandler. Sie können oft sehr spezifische Dinge in einen allgemeineren Namen + Parameter umgestalten.

  3. String-Parameter sind ein No-No! Verwenden Sie Aufzählungen. Ich möchte keinen Handler wie

    PostRenderHandler verwenden ("ColorWheel", "HSV", einigeDelegate);

Ich würde viel eher wie ein Enum kann ich untersuchen:

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

Man, ich könnte weitermachen ... Power zu diesem Kerl Josh Bloch - gut geschriebene APIs kann wirklich genial ... schlechte können sehr schmerzhaft sein.

+1

Vielen Dank für Ihr Feedback! Ja, der Joshua Bloch ist großartig. Ich bin überhaupt nicht überrascht, dass sein Name auftaucht. Ich glaube, er hat das Effektive Java-Buch geschrieben. –

+1

Ja, er ist der Autor. Das Buch ist sehr, sehr gut. Diese Regeln und Empfehlungen scheinen der erste Teil von "Clean code" zu sein. – Bakudan

Verwandte Themen