Gute API zu entwerfen ist eine Kunst. Gute API wird auch nach einiger Zeit geschätzt. Meiner Meinung nach sollte die abstrakt-konkrete Linie nicht generell voreingenommen sein. Einige Parameter können so konkret wie Wochentage sein, andere müssen auf Erweiterbarkeit ausgelegt sein (und es ist ziemlich dumm, sie konkret zu machen, z. B. einen Teil von Funktionsnamen), andere gehen möglicherweise sogar noch weiter und müssen elegant sein Eine API, die Sie für Rückrufe benötigen, oder sogar eine domänenspezifische Sprache, hilft bei der Bekämpfung der Komplexität.
Unter dem Mond passieren selten neue Dinge. Werfen Sie einen Blick auf den Stand der Technik, insbesondere auf etablierte Standards und Formate (z. B. können viele Dinge nach Feeds modelliert werden, Ereignisbeschreibungen wurden in ical / vcal erstellt). Machen Sie Ihre API einfach additiv, wenn häufige und allgegenwärtige Entitäten konkret sind und geplante Erweiterungen Wörterbücher sind. Es gibt auch einige gut etablierte Muster für den Umgang mit bestimmten Situationen. Beispielsweise kann die Verarbeitung von HTTP-Anforderungen (und ähnlichen) in der API mit Request- und Response-Objekten modelliert werden.
Informieren Sie sich vor dem Entwerfen der API über Aspekte, einschließlich derer, die nicht enthalten sind, die Sie jedoch kennen müssen. Beispiele hierfür sind Sprache, Schreibrichtung, Codierung, Gebietsschema, Zeitzoneninformation und dergleichen. Achten Sie auf Stellen, an denen Mehrfachnennungen auftreten können: Verwenden Sie für diese Listen und keine Einzelwerte. Wenn Sie beispielsweise eine API für das Videochat-System entwickeln, ist Ihre API viel nützlicher, wenn Sie von N Teilnehmern ausgehen, nicht nur von zwei (auch wenn Ihre Spezifikationen im Moment so sind).
Manchmal hilft es, die Komplexität drastisch zu reduzieren, wenn Sie abstrakt sind: Selbst wenn Sie einen Taschenrechner für das Hinzufügen von nur 3 + 4, 2 + 2 und 7 + 6 entwerfen, ist es möglicherweise viel einfacher, X + Y zu implementieren (mit technisch realisierbaren Grenzen für X und Y, und fügen Sie ADD (X, Y) anstelle von ADD_3_4 (), ADD_2_2 (), ... zu Ihrer API hinzu.
Alles in allem ist die Wahl der einen oder anderen Art nur ein technisches Detail. In Ihrer Dokumentation sollten häufige Anwendungsfälle konkret beschrieben werden.
Was auch immer Sie auf der Datenstrukturseite tun, stellen Sie ein Feld für eine API-Version bereit.
Zusammenfassend sollte die API die Komplexität beim Umgang mit Ihrer Software minimieren. Um die API zu schätzen, sollte der Grad der exponierten Komplexität angemessen sein. Die Entscheidung für die Form der API hängt stark von der Stabilität der Problemdomäne ab. Es sollte also eine Einschätzung darüber geben, in welche Richtung die Software und ihre API wachsen werden, da diese Informationen die Komplexitätsgleichung beeinflussen können. API-Design ist auch da, damit die Leute es verstehen. Wenn es im Bereich der Softwaretechnologie, in dem Sie tätig sind, gute Traditionen gibt, versuchen Sie, nicht viel von diesen abzuweichen, da dies das Verständnis erleichtert. Berücksichtigen Sie, für wen Sie schreiben. Fortgeschrittene Benutzer werden die Allgemeinheit und Flexibilität zu schätzen wissen, während diejenigen mit weniger Erfahrung mit der Konkretisierung besser umgehen können. Allerdings kümmern sich die meisten API-Nutzer dort um
Auf der Literaturseite kann ich "Beautiful Code" empfehlen. Führende Programmierer erklären, wie sie denken Von Andy Oram, Greg Wilson, denn ich denke, bei Schönheit geht es darum, verborgene Optimalität (und Eignung für einen bestimmten Zweck) wahrzunehmen.