Dalam pemrograman apa yang disebut Principle of Least Astonishment? Bagaimana konsep ini terkait dengan merancang API yang baik? Apakah ini sesuatu yang berlaku hanya untuk pemrograman berorientasi objek atau apakah itu merasuki teknik pemrograman lain juga? Apakah ini terkait dengan prinsip "melakukan satu hal dalam metode Anda dan melakukannya dengan baik"?
design
design-patterns
object-oriented
Kutu buku
sumber
sumber
Jawaban:
Prinsip Terkecil Leasing berlaku untuk berbagai kegiatan desain - dan tidak hanya dalam komputasi (meskipun sering kali hal-hal yang paling menakjubkan terjadi).
Pertimbangkan lift dengan tombol di sebelahnya yang bertuliskan "panggilan". Saat Anda menekan tombol, telepon umum berdering (alih-alih memanggil lift ke lantai itu). Ini akan dianggap mencengangkan. Desain yang benar adalah dengan meletakkan tombol panggilan di samping telepon daripada lift.
Selanjutnya, pikirkan halaman web yang memiliki jendela pop up yang menampilkan kesalahan gaya windows dengan tombol 'ok' di atasnya. Orang mengklik tombol 'ok' berpikir itu untuk sistem operasi dan bukannya pergi ke halaman web lain. Ini mengejutkan pengguna.
Ketika datang ke API ...
Memiliki metode yang melakukan satu hal berbeda berkontribusi pada pengurangan keheranan, namun ini adalah prinsip terpisah dalam desain API. Keempat prinsip yang sering disebut-sebut sebagai "desain API yang baik" adalah (dari pdf ini - hanya satu contoh dari presentasi semacam itu. Tautan di akhir yang khusus ini membuat bacaan yang baik):
Sangat berpotensi mengejutkan bagi seseorang untuk memiliki kelas yang mencoba melakukan segalanya - atau membutuhkan dua kelas untuk melakukan satu hal. Ini juga berpotensi mengejutkan bagi seseorang untuk mengacaukan internal dengan cara-cara aneh di bawah selimut (saya menemukan kelas terbuka di Ruby menjadi sumber keheranan yang tidak pernah berakhir). Juga menakjubkan untuk menemukan dua metode yang tampaknya melakukan hal yang sama.
Dengan demikian, prinsip paling tercengang mendasari desain API lainnya - tetapi, itu sendiri, tidak cukup hanya dengan mengatakan "tidak memiliki API yang menakjubkan."
Bacaan lebih lanjut (dari perspektif UI) - blog pengembang IBM berjudul The cranky user: The Principle of Least Astonishment
sumber
Prinsip yang paling mengejutkan adalah ketika Anda, sebagai perancang API, mencegah pengguna Anda mengatakan WAT .
Beberapa contoh keheranan dalam berbagai bahasa.
Dan ada banyak lagi contoh dalam berbagai bahasa dan API. Tugas Anda sebagai penulis API adalah untuk mencegah hal ini. Berbagai hal harus dinamai dan diketik sedemikian rupa sehingga jelas apa yang akan dilakukan panggilan ke API Anda. Sertakan dokumentasi yang cukup jika tidak memungkinkan.
Pada dasarnya, jika orang harus membaca dokumentasi Anda secara menyeluruh untuk mengetahui cara MEMBACA kode yang ditulis untuk API Anda, Anda mungkin salah melakukannya.
sumber
DateTime
masalahnya. Saya menganggap itu objek abadi danAdd
mengembalikan contoh baru. Ini sangat umum.Ini contoh "keheranan" yang terjadi pada saya baru-baru ini. Saya tersesat di jalan, jadi menepi dan agak panik (saya terlambat) menekan persimpangan ke GPS saya. Saya mengklik Go dan meletakkan tangan saya kembali ke kemudi - tetapi kemudian mendapat peringatan keras (layar penuh) bahwa GPS harus diperbarui - mengharuskan saya untuk mengakui.
Pikiran saya adalah "apakah Anda bercanda? Anda memberi tahu saya sekarang? Saya perlu melepaskan tangan saya dari roda untuk mengakui?".
Permukaan takjub di antarmuka (biasanya UI, tapi saya kira itu juga bisa menjadi API yang berperilaku tidak terduga). Saya akan mengatakan itu meresap di bawah antarmuka juga, karena dibutuhkan perangkat lunak yang dirancang dengan baik untuk mendukung antarmuka yang benar-benar dirancang dengan baik.
sumber