En Az Şaşkınlık İlkesi, sadece hesaplamada değil (çoğu zaman en şaşırtıcı şeylerin gerçekleştiği yer olmasına rağmen) çok çeşitli tasarım faaliyetlerine uygulanabilir.
Yanında "ara" yazan düğmeli bir asansör düşünün. Düğmeye bastığınızda, ödemeli telefon çalar (asansörü o kata çağırmak yerine). Bu şaşırtıcı olarak kabul edilir. Doğru tasarım asansörün yerine telefonun yanındaki çağrı düğmesini koymak olacaktır.
Ardından, üzerinde 'ok' düğmesi bulunan bir pencere stili hatası gösteren bir açılır pencere içeren bir web sayfasını düşünün. İnsanlar işletim sistemi için olduğunu düşünerek 'tamam' düğmesini tıklar ve bunun yerine başka bir web sayfasına giderler. Bu kullanıcıyı şaşırtıyor.
Bir API'ye gelince ...
- Alanları yazdırmak yerine "uygulanacak" duruma geri döndüren bir toString () yöntemini düşünün.
- Gizli bilgiler üzerinde çalışan bir equals () yöntemi.
- Bazen insanlar daha sonra dizideki sort () işlevini çağırmak için add yöntemini değiştirerek sıralanmış bir sınıf sınıfını uygulamaya çalışırlar; bu, add yönteminin listeye eklenmesi gerektiği için şaşırtıcıdır; derinlerde bir yerde birisinin ara yüz sözleşmesini ihlal ettiği bilgisi olmadan.
Farklı bir şey yapan bir yönteme sahip olmak şaşkınlığın azaltılmasına katkıda bulunur, ancak bunlar API tasarımında ayrı ilkelerdir. Genellikle "iyi API tasarımı" olarak adlandırılan dört ilke ( bu pdf'den - böyle bir sunumun yalnızca bir örneği. Bu özel olanın sonundaki bağlantılar iyi okuma için yapar):
Birisinin, her şeyi yapmaya çalışan bir sınıfa sahip olması ya da tek bir şeyi yapması için iki sınıfa ihtiyaç duyması şaşırtıcı olabilir. Aynı şekilde, birisinin iç kısımları kapakların altında tuhaf yollarla karıştırması potansiyel olarak şaşırtıcı (Ruby'de açık sınıfları hiç bitmeyen bir şaşkınlık kaynağı olarak görüyorum). Aynı şekilde, görünüşe göre aynı şeyi yapan iki yöntem bulmak şaşırtıcı.
Bu nedenle, en az şaşkınlık ilkesi, diğer API tasarımlarının temelini oluşturuyor - ancak kendisi, sadece "şaşırtıcı bir API yok" demek yeterli değil.
Daha fazla okuma (UI perspektifinden) - “ Asıl Şaşkınlık İlkesi ” başlıklı IBM geliştirici blogu