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:
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: -)
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
Ich würde das sagen
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% ).
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.
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
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:
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: -)
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.
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
).