www.wikidata.de-de.nina.az
Das Principle of Least Surprise deutsch Prinzip der geringsten Uberraschung auch unter der Abkurzung POLS bekannt ist eine goldene Regel in der Software Ergonomie der Mensch Computer Interaktion und dem Interfacedesign Diese Regel wurde von Geoffrey James in seinem Buch The Tao of Programming als Law of Least Astonishment formuliert Absatz 4 1 Sie besagt dass eine Benutzerschnittstelle so ausgelegt werden sollte dass der Benutzer moglichst wenige Uberraschungen erlebt Allgemein kann man somit folgende Regel formulieren Never surprise the user Uberrasche niemals den Benutzer Inhaltsverzeichnis 1 Anwendung auf Quellcode 2 Beispiele 3 Problematik 4 Gezielte Verstosse 5 WeblinksAnwendung auf Quellcode BearbeitenDas Principle of Least Surprise wird auch auf den Quellcode von Anwendungen erweitert Hierbei sollen Objekte wie Variablen Funktionen Methoden Klassen und dergleichen derart benannt werden dass deren Funktion und mogliche Nebenwirkungen klar erkenntlich sind Beispiele Customer getCustomer int customerId Gibt einen Kunden anhand einer eindeutigen Identifikationsnummer zuruck Sollte der Kunde nicht gefunden werden tritt eine Ausnahme auf Die Methode besitzt keine Nebenwirkungen Customer getCustomerOrNull int customerId Gibt einen Kunden anhand einer eindeutigen Identifikationsnummer zuruck Sollte der Kunde nicht gefunden werden wird der Nullwert zuruckgeliefert Im Fehlerfall tritt eine Ausnahme auf Die Methode besitzt keine Nebenwirkungen Customer getCustomerOrDefault int customerId Gibt einen Kunden anhand einer eindeutigen Identifikationsnummer zuruck Sollte der Kunde nicht gefunden werden wird ein Kundenobjekt mit Standardwerten zuruckgeliefert Im Fehlerfall tritt eine Ausnahme auf Die Methode besitzt keine Nebenwirkungen bool tryGetCustomer int customerId out Customer customer Gibt true zuruck falls der Kunde gefunden wurde Gibt false zuruck falls der Kunde nicht gefunden wurde oder ein Fehler aufgetreten ist Die Methode liefert zudem den Kunden in der Variable customer zuruck falls der Kunde gefunden wird Andernfalls wird die Variable customer auf den Nullwert gesetzt Die Methode besitzt keine Nebenwirkungen void saveCustomer Customer customer Speichert das Kundenobjekt und weist somit Nebenwirkungen auf Im Fehlerfall tritt eine Ausnahme auf async int addCustomerAndReturnCustomerIdAsync Customer customer Speichert das Kundenobjekt und weist somit Nebenwirkungen auf Anschliessend wird die Identifikationsnummer des Kundenobjekts in einem Continuation Task zuruckgeliefert Im Fehlerfall tritt eine Ausnahme auf Das bei vielen Frameworks verwendete Designparadigma Konvention vor Konfiguration englisch Convention over Configuration basiert auf dem Prinzip der geringsten Uberraschung So reicht es beispielsweise in Spring Data Repository Interfaces mit entsprechenden Methoden zu versehen und das Framework kummert sich um die entsprechenden Datenbankabfragen Beispielsweise wird List lt Customer gt findByLastnameAndAgeGreaterThan String lastname int age alle Kunden mit passendem Namen und Alter finden ohne Code schreiben zu mussen Beispiele BearbeitenSoftware insbesondere Chat Software etwa bei Eintreffen einer neuen Nachricht sollte nicht ungefragt den Tastaturfokus ubernehmen Der Benutzer konnte gerade dabei sein sein Kennwort in ein Formular einzugeben und durch blindes Tippen sein Kennwort stattdessen in das gerade erschienene Chatfenster eingeben und versehentlich an andere Personen schicken Eine Software die Tastatureingaben aufzeichnet Makro Recorder sollte auch Tastenkombinationen aufzeichnen konnen die gangigerweise zum Beenden von Software verwendet werden wie Cmd Q Strg Q oder Alt F4 Hierdurch sollte der Makroaufzeichnungsprozess nicht beendet werden und das noch nicht gespeicherte Makro nicht verloren gehen Die Software sollte stattdessen eine erkennbare Moglichkeit zum Beenden des Aufzeichnungsprozesses anbieten und danach sollten die ublichen Tastenkombinationen wieder aktiv sein Generell sollte Software niemals Daten entfernen die moglicherweise noch benotigt werden etwa Konfigurationsoptionen die im momentanen Zustand der Anwendung keine Wirksamkeit haben aber bei anderer Verwendung spater wieder relevant werden konnten Ein Beispiel waren hier Stromsparoptionen fur den Akkubetrieb wahrend ein Notebook am Stromnetz angeschlossen ist oder Druckeinstellungen eines Dokumentes auch wenn man den Druckdialog wieder schliesst ohne zu drucken Problematik BearbeitenDie Problematik bei der Anwendung dieser Regel ist dass der Programmierer oft nicht vorhersagen kann was den Benutzer uberrascht da er eine systemnahere Denkweise hat und nicht wissen kann was genau der Benutzer erwartet Ausserdem konnen verschiedene Benutzer hochst unterschiedliche Erwartungen haben Oft erscheint auch gerade ein Verhalten das dem Programmierer konsistent erscheint einem Benutzer ungewohnt oder merkwurdig Daher ist es wichtig schon wahrend der Entstehung einer Software oder der Bedienoberflache eines Gerates Ruckmeldungen von zukunftigen Benutzern zu bekommen Siehe dazu auch Extreme Programming Gezielte Verstosse BearbeitenBesonders in der Werbetechnik wird oft gezielt gegen die Regel verstossen um den Anwender zu einer Aktion zu bewegen die er im Normalfall nicht begehen wurde So wird bei Layer Ads haufig die Schaltflache zum Offnen der Anzeige mit einem X versehen und in einer oberen Ecke platziert was der Erwartung des Benutzers widerspricht da ein X konventionell die Schaltflache zum Schliessen eines Fensters markiert Scherzanwendungen basieren haufig auf einem Verstoss gegen diese Vorschriften indem zwei gegensatzliche Schaltflachen z B Ja und Nein beim Daraufzeigen mit dem Mauszeiger hover ihre Beschriftungen tauschen oder verschwinden oder indem Schaltflachen die eigentlich eine Aktion ausfuhren sollen einfach gar nichts bewirken Weblinks BearbeitenGeoffrey James The Tao of Programming 1987 E S Raymond Applying the principle of least surprise In The Art of Unix Programming Principle Of Least Astonishment Portland Pattern Repository WikiWikiWebVPrinzipien objektorientierten DesignsSOLID Prinzipien Single Responsibility Open Closed Liskovsches Substitutionsprinzip Interface Segregation Dependency InversionWeitere Prinzipien Gesetz von Demeter Design by Contract Datenkapselung Linguistic Modular Units Self Documentation Uniform Access Single Choice Persistence Closure Command Query SeparationPackaging Prinzipien Reuse Release Equivalence Common Closure Common Reuse Acyclic Dependencies Stable Dependencies Stable Abstractions Abgerufen von https de wikipedia org w index php title Principle of Least Surprise amp oldid 235352978