Ada apa dengan API hebat yang membuatnya hebat? Saya pikir menganut mantra "lakukan satu hal dan lakukan dengan baik" adalah pertanda baik dan menjadi pemetaan yang baik ke domain masalah adalah penting, tetapi apa kesamaan yang dimiliki API hebat?
api-design
dan_waterworth
sumber
sumber
Jawaban:
Anda harus berhati-hati untuk menghindari penambahan kosa kata baru hanya demi API Anda. API favorit saya menjelaskan banyak hal kepada saya dalam kosa kata yang sudah saya mengerti. Sejalan dengan itu:
Jangan menambahkan terlalu banyak abstraksi di atas apa yang Anda bangun. Tetap sederhana.
Saya sudah harus memikirkan sekitar setengah lusin lapisan abstraksi. Jangan membuat saya berpikir tentang lapisan tambahan. Jangan beri saya terlalu banyak hal baru untuk dipelajari yang tidak akan menambah nilai pada tujuan akhir saya. Misalnya, hindari menggunakan kelas file khusus Anda sendiri yang bekerja secara berbeda maka jenis file bahasa hanya karena Anda berpikir cara Anda lebih baik daripada cara yang diterima secara umum. Tetap dengan cara yang diterima secara umum, setidaknya di antarmuka Anda, menjadi lebih baik atau lebih buruk.
Tetap dengan ide-ide konkret
Sebagai contoh jangan mencoba untuk menyembunyikan fakta bahwa "model" bagian dari kerangka kerja MVC Anda adalah ujung depan untuk database. Manfaatkan kosa kata terkenal di sekitar "database". Saya tahu kunci asing apa. Saya tahu baris dan kolom apa. Bicaralah dengan saya dalam hal ini.
Jangan mencabut pengetahuan esensial
Mirip dengan bekerja dengan ide-ide konkret. Jangan sembunyikan fakta bahwa kita berurusan dengan file atau database atau baris dalam database. Saya tahu hal-hal ini. Jika saya berurusan dengan wadah, seperti Daftar, ada peluang bagus yang perlu saya ketahui kompleksitas algoritmik dari operasi umum. Anda dapat menyederhanakan banyak itu hanya dengan memberi tahu saya "daftar tertaut" atau "larik". Seperangkat ide besar tiba-tiba akan dibawa untuk menanggung apa yang Anda lakukan dan semuanya akan tiba-tiba masuk akal. Jangan membuat set ide Anda sendiri yang harus saya pelajari ketika saya sudah akan datang dengan set terminologi yang kaya dan berguna untuk diterapkan pada masalah.
Kurangi jumlah istilah yang saya butuhkan dalam kosakata saya
Jika saya menggunakan API Anda untuk membuka file gambar jenis apa pun, saya tidak perlu terlalu memikirkan pngs vs gifs vs jpgs. Anda akan melakukannya untuk saya. Ini kompetensi inti Anda, bukan milikku. Saya memiliki pemahaman yang kabur bahwa Anda memiliki sihir untuk melakukan ini untuk saya.
sumber
API yang bermanfaat memiliki yang berikut:
X
sama sekali berbeda dari konvensi yang ditetapkan oleh sisa API.sumber
API Hebat memiliki dokumentasi hebat.
sumber
sumber
Pertanyaan ini dibahas dalam "Desain API Praktis: Pengakuan Arsitek Kerangka Java" oleh Jaroslav Tulach dari tim NetBeans.
sumber
Antarmuka berguna yang paling sederhana dan konvensi penamaan yang baik.
sumber