Zasada najmniejszego zdziwienia ma zastosowanie do szerokiej gamy działań projektowych - i to nie tylko w informatyce (choć często zdarzają się najbardziej zadziwiające rzeczy).
Rozważ windę z przyciskiem obok, który mówi „zadzwoń”. Po naciśnięciu przycisku telefon zadzwoni (zamiast dzwonić do windy na to piętro). Można to uznać za zadziwiające. Prawidłowym rozwiązaniem byłoby umieszczenie przycisku połączenia obok telefonu zamiast windy.
Następnie pomyśl o stronie internetowej z wyskakującym oknem, które pokazuje błąd stylu okna z przyciskiem „ok”. Ludzie klikają przycisk „ok”, myśląc, że jest to system operacyjny, i zamiast tego przechodzą na inną stronę internetową. To zadziwia użytkownika.
Jeśli chodzi o interfejs API ...
- Pomyśl o metodzie toString (), która zamiast wypisywać pola zwraca „do zaimplementowania”.
- Metoda equals (), która działa na ukrytych informacjach.
- Czasami ludzie próbują zaimplementować posortowaną klasę listy, zmieniając następnie metodę add na wywołanie sort () w tablicy - co jest zadziwiające, ponieważ metoda add ma dołączyć się do listy - jest to szczególnie zdumiewające, gdy odzyskujemy obiekt List bez wiedzy, że gdzieś głęboko w środku ktoś naruszył umowę interfejsu.
Posiadanie metody, która robi jedną odrębną rzecz, przyczynia się do zmniejszenia zdziwienia, jednak są to odrębne zasady w projektowaniu API. Cztery zasady często reklamowane jako „dobry projekt API” to (z tego pliku pdf - tylko jeden przykład takiej prezentacji. Linki na końcu tej konkretnej stanowią dobrą lekturę):
Potencjalnie zadziwiające jest to, że ktoś ma klasę, która próbuje zrobić wszystko - lub potrzebuje dwóch klas do zrobienia jednej rzeczy. Potencjalnie zadziwiające jest to, że ktoś dziwnie zadziera z wnętrznościami pod przykryciem (uważam, że otwarte klasy w Ruby są źródłem niekończącego się zdziwienia). Zadziwiające jest również znalezienie dwóch metod, które najwyraźniej robią to samo.
Jako taka zasada najmniejszego zdziwienia leży u podstaw innych projektów API - ale sama w sobie nie wystarczy powiedzieć „nie ma zadziwiającego API”.
Dalsza lektura (z perspektywy interfejsu użytkownika) - blog programisty IBM zatytułowany Zepsuty użytkownik: zasada najmniejszego zdziwienia