Stellen Sie sich ein automatisiertes Build-System vor, das die Ergebnisse in einer Datenbank speichert und eine tabellarische Anzeige der Ergebnisse über dynamisches HTML als Antwort auf http GET Anfragen. Da viele verschiedene Nutzer unterschiedliche Teilmengen der Ergebnisse sehen wollen, gibt es Parsing-Skripte in PHP, die jeweils mehrere optionale Filterparameter und -werte akzeptieren. Zum Beispiel (ich lasse den http-Teil weg, damit niemand diese Beispiel-URL tatsächlich anklickt):
display_results.php?componenent_name=meine_comp1&build_type=build_type1&build_owner=fred
Selbst wenn die Liste aller möglichen Parameter und ihrer zulässigen Werte auf einer Hilfeseite aufgeführt ist, hat der Benutzer beim Erstellen einer URL-Anforderung diese Dokumentation möglicherweise nicht zur Hand. Stattdessen ist er darauf angewiesen, sich die gültigen Parameter (einschließlich ihrer Schreibweise) und die zulässigen Werte einzuprägen. Manchmal wird er/sie sich dabei irren.
Frage
Welche der folgenden Optionen ist unter dem Gesichtspunkt der Benutzerfreundlichkeit für den Endbenutzer und der Wartungsfreundlichkeit für den Entwickler am besten geeignet, um auf solche Benutzerfehler zu reagieren?
- Ungültige Parameter oder Werte ignorieren
- Ungültige Parameter ignorieren, bei ungültigen Werten nichts zurückgeben
- Möglichst viele gültige Tabellendaten und eine Fehlermeldung (mit korrekter Verwendung) zurückgeben
- Nur eine Fehlermeldung zurückgeben (bei korrekter Verwendung)
- Versuchen Sie es mit der Autokorrektur
- Sonstiges (erläutern)
Wenn die Datenbank beispielsweise Daten für build_type1 und fred und joe für drei Komponenten namens comp1, comp2 und comp3 enthält und der Benutzer (fälschlicherweise) schreibt:
display_results.php? Name \=comp1,comp2&build_type=build_type1&build_owner= john
- Würde alle Ergebnisse zurückgeben (weil falscher Parametername "name" ignoriert, ungültiger Wert "john")
- Würde nichts zurückgeben, da keine Daten für john
- Würde alle Ergebnisse für build_type1 sowie die Meldungen "no build_owner = john" und "maybe you meant 'component_name'" zurückgeben
- Würde nur die Meldungen "no build_owner = john" und "maybe you meant 'component_name'" zurückgeben
- Würde comp1 und comp2 Ergebnisse für build_type1 für joe zurückgeben
- Sonstiges (Beschreibung)
Ich definiere Benutzerfreundlichkeit als Übereinstimmung mit weit verbreiteten, gut funktionierenden Webanwendungen, die es bereits gibt - wenn die Benutzer mit diesen zufrieden sind, werden sie auch mit der von mir beschriebenen Anwendung zufrieden sein.
Ich stelle diese Frage, weil ich ein Hauptnutzer solcher Skripte bin, eine ganze Reihe von Verbesserungswünschen habe und Unterstützung für weitere Wünsche erhalten möchte.
\=== Über die Schnittstelle - Freiform oder "Builder Page". Ja, ich spreche von Freiform. Es gibt eine "Erstellungsseite" im System, aber (a) sie bietet nie alle Optionen, die alle Benutzer zu wollen scheinen, und (b) ich habe es nicht geschafft, einen Verbesserungsantrag für die "Erstellung von Permalink" durchzusetzen.
\=== Danke für die gewählte Antwort - der Platz im Kommentar reicht nicht aus:
Danke @pygorex1! Sie haben eine Antwort gegeben, die meine Frage in den Kontext eines bekannten Softwarekonstrukts stellt - die API. Und Sie haben ein gutes (wenn auch vielleicht übertriebenes ;-) ) Beispiel für die Auswirkungen einer Verletzung dieser Prinzipien gegeben. Schließlich hat mich noch etwas an den APIs dieser Skripte gestört, und als Sie die "Selbstdokumentation" erwähnten, brachten Sie es für mich auf den Punkt. Was mich gestört hat, war, dass ich, wenn es nur wenig Dokumentation gibt (weil es kostspielig ist, sie auf dem neuesten Stand zu halten) und bei Teilergebnissen, die aufgrund von Benutzerfehlern (meinen!) zurückgegeben werden, nicht lernen alles über das System. "Selbstdokumentation" ist wahrscheinlich die prägnanteste Rechtfertigung für das von Ihnen empfohlene Fehlerbehandlungskonzept. Es ist einfacher, es den Benutzern und Betreuern zu verkaufen!