Was macht großartige APIs so großartig? Ich denke, dass das Festhalten an dem Mantra "Mach eins und mach es gut" ein gutes Zeichen ist und es wichtig ist, eine gute Zuordnung zur Problemdomäne zu haben, aber was haben großartige APIs gemeinsam?
Was macht großartige APIs so großartig? Ich denke, dass das Festhalten an dem Mantra "Mach eins und mach es gut" ein gutes Zeichen ist und es wichtig ist, eine gute Zuordnung zur Problemdomäne zu haben, aber was haben großartige APIs gemeinsam?
Antworten:
Sie müssen vorsichtig sein, um das Hinzufügen neuer Vokabeln nur für Ihre API zu vermeiden. Meine Lieblings-APIs erklären mir Dinge in Vokabeln, die ich bereits verstehe. In diese Richtung:
Ich muss schon an ein halbes Dutzend Abstraktionsebenen denken. Lass mich nicht über zusätzliche Schichten nachdenken. Gib mir nicht zu viele neue Dinge zu lernen, die meinem Endziel keinen Mehrwert verleihen. Vermeiden Sie beispielsweise die Verwendung einer eigenen speziellen Dateiklasse, die anders funktioniert als der Dateityp der Sprache, nur weil Sie der Meinung sind, dass Ihr Weg besser ist als der allgemein akzeptierte. Halten Sie sich an die allgemein akzeptierte Methode, zumindest in Ihren Schnittstellen, zum Guten oder zum Schlechten.
Versuchen Sie beispielsweise nicht, die Tatsache zu verbergen, dass der "Modell" -Teil Ihres MVC-Frameworks ein Front-End für eine Datenbank ist. Nutzen Sie das bekannte Vokabular rund um "Datenbanken". Ich weiß, was Fremdschlüssel sind. Ich weiß, was Zeilen und Spalten sind. Sprechen Sie mit mir in diesen Begriffen.
Ähnlich wie bei der Arbeit mit konkreten Ideen. Verstecken Sie nicht die Tatsache, dass es sich um Dateien oder Datenbanken oder Zeilen in Datenbanken handelt. Ich kenne diese Dinge. Wenn ich es mit einem Container wie einer Liste zu tun habe, besteht eine gute Chance, dass ich die algorithmische Komplexität gängiger Operationen kennen muss. Sie können das sehr vereinfachen, indem Sie mir einfach sagen, dass es sich um eine "verknüpfte Liste" oder ein "Array" handelt. Plötzlich wird eine Vielzahl von Ideen auf Ihr Tun einwirken und es wird plötzlich Sinn ergeben. Erstellen Sie keine eigenen Ideen, die ich erst lernen muss, wenn ich bereits eine umfassende und nützliche Terminologie für das Problem habe.
Wenn ich Ihre API verwende, um eine Bilddatei eines beliebigen Typs zu öffnen, sollte ich nicht viel über pngs vs gifs vs jpgs nachdenken müssen. Das machst du für mich. Es ist Ihre Kernkompetenz, nicht meine. Ich habe ein vages Verständnis, dass Sie etwas Magie haben, um dies für mich zu tun.
Eine nützliche API hat Folgendes:
X
vollständig von der im Rest der API festgelegten Konvention unterscheidet.Diese Frage wird in "Praktisches API-Design: Geständnisse eines Java-Framework-Architekten" von Jaroslav Tulach vom NetBeans-Team behandelt.