Nach meiner Lektüre des Artikels Programmers Are People Too von Ken Arnold, habe ich versucht, die Idee der progressiven Offenlegung in einer minimalen C++ API zu implementieren, um zu verstehen, wie es in einem größeren Maßstab durchgeführt werden könnte.Progressive Disclosure in C++ API
Progressive Offenlegung bezieht sich auf die Idee, eine API in Kategorien zu "teilen", die dem Benutzer einer API nur auf Anfrage offengelegt werden. Beispielsweise kann eine API in zwei Kategorien unterteilt werden: eine Basiskategorie, die für häufig benötigte und einfach zu verwendende Methoden verfügbar ist (für den Benutzer standardmäßig zugänglich) und eine erweiterte Kategorie für Dienste auf Expertenebene.
Ich habe nur ein Beispiel im Web einer solchen Implementierung gefunden: die db4o Bibliothek (in Java), aber ich verstehe ihre Strategie nicht wirklich. Wenn wir uns beispielsweise ObjectServer ansehen, wird es wie seine erweiterte Klasse ExtObjectServer als Schnittstelle deklariert. Dann wird eine implementierende ObjectServerImpl Klasse definiert, die von diesen beiden Schnittstellen erbt und alle Methoden von beiden Schnittstellen implementiert sind.
Code Dies ermöglicht es angeblich, wie:
public void test() throws IOException {
final String user = "hohohi";
final String password = "hohoho";
ObjectServer server = clientServerFixture().server();
server.grantAccess(user, password);
ObjectContainer con = openClient(user, password);
Assert.isNotNull(con);
con.close();
server.ext().revokeAccess(user); // How does this limit the scope to
// expert level methods only since it
// inherits from ObjectServer?
// ...
});
Mein Wissen von Java ist nicht so gut, aber es scheint, mein Missverständnis, wie diese Arbeit ist auf einer höheren Ebene.
Danke für Ihre Hilfe!
Wenn ich den Artikel richtig verstehe, ist Progressive Disclosure eine Dokumentationstechnik, keine Programmiermethodik. Sie organisieren die Dokumentation in separaten Abschnitten für die allgemeinen Sachen und die fortgeschrittenen Sachen. – Barmar
Dies macht wahrscheinlich die Frage geeigneter für Programmierer.SE oder Softwareengineering.SE. – Barmar
@Barmar So wie ich es gelesen habe, ist es mehr als nur Dokumentation: Sie delegieren die "fortgeschrittenen" Funktionen in eine separate Schnittstelle. – Angew