Was ist das Leistungsgewicht einer API? ___ answer3599379 ___

Ich würde "konzeptionelles Gewicht" als die Anzahl der abstrakten Konzepte interpretieren, die Sie lernen und verstehen müssen, um die API zu verwenden. Konzepte werden normalerweise öffentlichen Klassen zugeordnet, während Klassen, die nicht öffentlich sind, zu der Hauptkomponente, aber nicht zur konzeptionellen Gewichtung hinzugefügt werden.

Wenn Sie es also technisch ausdrücken, hat eine API ein hohes konzeptionelles Gewicht, wenn ein typischer API-Client explizit viele Klassen der API verwenden muss, um damit zu arbeiten.

"Gutes Leistungsgewicht" bedeutet dann, dass die API so wenig öffentliche Klassen wie möglich verwenden sollte, um so viel Funktionalität wie möglich anzubieten. Das bedeutet eine API sollte:

  • Fügen Sie keine Konzepte oder Abstraktionen hinzu, die nicht in der Domäne vorhanden sind
  • Bietet für komplexe Domänen Verknüpfungen zu den am häufigsten benötigten Funktionen, mit denen ein typischer Benutzer die komplexeren Teile der Domäne umgehen kann
___ answer3599062 ___

Ich nehme an, dass eine API mit einem guten Leistungsgewicht eine API ist, die eine Menge Funktionalität (Leistung) bietet, während sie nur wenig Aufwand erfordert, damit sie richtig funktioniert (gewichtet).

Dies kann beispielsweise über "Convention over Configuration" erfolgen. (Beachten Sie, dass dies nur ein Beispiel ist und Sie dies auf verschiedene Arten erreichen können.)

Es wäre hilfreich, einen Link zu Blochs Präsentation zu haben, er könnte sich auf etwas anderes beziehen: -)

    
___ qstntxt ___

In Blochs Präsentation sagte er, dass der Designer nach einem guten Leistungsgewicht für API suchen sollte. Darüber hinaus betonte er, dass konzeptionelles Gewicht wichtiger ist als Bulk . Ich denke, das Gewicht ist für ' konzeptionelles Gewicht ', Masse ist für die Anzahl der Methoden einer Klasse.

Aber ich konnte nicht verstehen, was " konzeptionelles Gewicht " ist, was " Macht-Gewicht-Verhältnis " ist. Willkommen zu jeder Erklärung!

Bloch gab ein Beispiel: %code% hat ein gutes Leistungsgewicht. Wenn Kunden einen Index einer Unterliste wissen wollen, muss er nicht eine niedrige "p2w ratio" -Methode %code% aufrufen, stattdessen könnte er %code% aufrufen. Bloch hielt dies für ein "Leistungsgewicht".

Herkunft:

API sollte so klein wie möglich, aber nicht kleiner sein

  • API sollte seine Anforderungen erfüllen
  • Lassen Sie es im Zweifelsfall aus
    • Funktionalität, Klassen, Methoden, Parameter usw.
    • Sie können immer hinzufügen, aber Sie können
    • niemals entfernen
  • Konzeptionelles Gewicht wichtiger als Bulk
  • Achten Sie auf ein gutes Leistungsgewicht
___ answer3599051 ___

Ich würde das sagen

  • power = der Umfang der von der API bereitgestellten Funktionalität
  • Gewicht = der Aufwand, der zum Erlernen der API erforderlich ist
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123design ___ Design in der Programmierung ist der Akt, bestimmte Entscheidungen darüber zu treffen, wie man ein Programm am besten strukturiert, um Ziele der Zuverlässigkeit, Wartbarkeit, Korrektheit oder Benutzerfreundlichkeit zu erreichen. ___ tag123api ___ NICHT VERWENDEN: Tag mit der Bibliothek, die Sie meinen, [api-design], oder etwas anderes, das stattdessen geeignet ist. Fragen, die uns auffordern, eine API zu empfehlen oder zu finden, sind off-topic. ___ answer9741132 ___

Ein weiterer wesentlicher Aspekt des Leistungsgewichtes einer API oder gar einer Sprache als Ganzes ist ihre Ausführlichkeit. Das heißt, wie viel Sie eingeben müssen, um eine Aufgabe zu erledigen und die Lesbarkeit des resultierenden Codes. In Java hat %code% ein besseres Leistungsgewicht als %code% , die Schnittstelle, die es ersetzen sollte, weil %code% einen kürzeren Namen und kürzere Methodennamen hat, die nicht länger sind als sie benötigen sei und mache den gleichen Job ohne Verlust an Klarheit (wie auch die zusätzliche Methode %code% ).

    
___ answer3599072 ___

Er bezieht sich auf all die Dinge, die Sie durch die Verwendung einer API erhalten. Sein Beispiel ist das Collections-API, bei dem Sie bei jedem Zugriff nur bestimmte Funktionen erhalten. Auf der anderen Seite werden einige APIs viel mehr laden, nur um Ihnen einige Funktionen zu geben.

    
___

8

In Blochs Präsentation sagte er, dass der Designer nach einem guten Leistungsgewicht für API suchen sollte. Darüber hinaus betonte er, dass konzeptionelles Gewicht wichtiger ist als Bulk . Ich denke, das Gewicht ist für ' konzeptionelles Gewicht ', Masse ist für die Anzahl der Methoden einer Klasse.

Aber ich konnte nicht verstehen, was " konzeptionelles Gewicht " ist, was " Macht-Gewicht-Verhältnis " ist. Willkommen zu jeder Erklärung!

Bloch gab ein Beispiel: List.subList() hat ein gutes Leistungsgewicht. Wenn Kunden einen Index einer Unterliste wissen wollen, muss er nicht eine niedrige "p2w ratio" -Methode indexOfSubList(a,b,e) aufrufen, stattdessen könnte er List.subList(a,b).indexOf(e) aufrufen. Bloch hielt dies für ein "Leistungsgewicht".

Herkunft:

API sollte so klein wie möglich, aber nicht kleiner sein

  • API sollte seine Anforderungen erfüllen
  • Lassen Sie es im Zweifelsfall aus
    • Funktionalität, Klassen, Methoden, Parameter usw.
    • Sie können immer hinzufügen, aber Sie können
    • niemals entfernen
  • Konzeptionelles Gewicht wichtiger als Bulk
  • Achten Sie auf ein gutes Leistungsgewicht
卢声远 Shengyuan Lu 30.08.2010, 08:41
quelle

5 Antworten

5

Ich würde "konzeptionelles Gewicht" als die Anzahl der abstrakten Konzepte interpretieren, die Sie lernen und verstehen müssen, um die API zu verwenden. Konzepte werden normalerweise öffentlichen Klassen zugeordnet, während Klassen, die nicht öffentlich sind, zu der Hauptkomponente, aber nicht zur konzeptionellen Gewichtung hinzugefügt werden.

Wenn Sie es also technisch ausdrücken, hat eine API ein hohes konzeptionelles Gewicht, wenn ein typischer API-Client explizit viele Klassen der API verwenden muss, um damit zu arbeiten.

"Gutes Leistungsgewicht" bedeutet dann, dass die API so wenig öffentliche Klassen wie möglich verwenden sollte, um so viel Funktionalität wie möglich anzubieten. Das bedeutet eine API sollte:

  • Fügen Sie keine Konzepte oder Abstraktionen hinzu, die nicht in der Domäne vorhanden sind
  • Bietet für komplexe Domänen Verknüpfungen zu den am häufigsten benötigten Funktionen, mit denen ein typischer Benutzer die komplexeren Teile der Domäne umgehen kann
Michael Borgwardt 30.08.2010, 10:00
quelle
5

Ich würde das sagen

  • power = der Umfang der von der API bereitgestellten Funktionalität
  • Gewicht = der Aufwand, der zum Erlernen der API erforderlich ist
Bozho 30.08.2010 08:50
quelle
1

Ich nehme an, dass eine API mit einem guten Leistungsgewicht eine API ist, die eine Menge Funktionalität (Leistung) bietet, während sie nur wenig Aufwand erfordert, damit sie richtig funktioniert (gewichtet).

Dies kann beispielsweise über "Convention over Configuration" erfolgen. (Beachten Sie, dass dies nur ein Beispiel ist und Sie dies auf verschiedene Arten erreichen können.)

Es wäre hilfreich, einen Link zu Blochs Präsentation zu haben, er könnte sich auf etwas anderes beziehen: -)

    
Vinko Vrsalovic 30.08.2010 08:52
quelle
1

Er bezieht sich auf all die Dinge, die Sie durch die Verwendung einer API erhalten. Sein Beispiel ist das Collections-API, bei dem Sie bei jedem Zugriff nur bestimmte Funktionen erhalten. Auf der anderen Seite werden einige APIs viel mehr laden, nur um Ihnen einige Funktionen zu geben.

    
Eldelshell 30.08.2010 08:53
quelle
0

Ein weiterer wesentlicher Aspekt des Leistungsgewichtes einer API oder gar einer Sprache als Ganzes ist ihre Ausführlichkeit. Das heißt, wie viel Sie eingeben müssen, um eine Aufgabe zu erledigen und die Lesbarkeit des resultierenden Codes. In Java hat Iterator ein besseres Leistungsgewicht als Enumeration , die Schnittstelle, die es ersetzen sollte, weil Iterator einen kürzeren Namen und kürzere Methodennamen hat, die nicht länger sind als sie benötigen sei und mache den gleichen Job ohne Verlust an Klarheit (wie auch die zusätzliche Methode remove ).

    
scorciatoia 16.03.2012 16:37
quelle

Tags und Links