Harika API'lerin ortak noktası nedir? [kapalı]


15

Harika API'lerle ilgili onları harika yapan nedir? Ben "bir şey yapmak ve iyi yapmak" mantra bağlılık iyi bir işaret olduğunu düşünmek ve sorun etki alanı için iyi bir haritalama önemlidir, ama büyük API'lerin ortak ne var?


1
Bazı "harika API" ları listeleyebilir misiniz? Şahsen Qt.
BenjaminB

Sinatra web uygulama çerçevesi sevdiğim apı'dir. Bir şey yapar ve iyi yapar.
dodgy_coder

Yanıtlar:


17

Yalnızca API'nız uğruna yeni kelimeler eklemekten kaçınmak için dikkatli olmalısınız. Favori API'lerim bana anladığım kelime haznesinde bazı şeyleri açıklıyor. Bu çizgiler boyunca:

Yaptığınız şeyin üstüne çok fazla soyutlama eklemeyin. Basit tutun.

Zaten yaklaşık yarım düzine soyutlama katmanı düşünmem gerekiyor. Bana fazladan katmanlar hakkında düşündürme. Son hedefime değer katacak öğrenecek çok fazla yeni şey vermeyin. Örneğin, dilin dosya türünden farklı çalışan kendi özel dosya sınıfınızı kullanmaktan kaçının, yolunuzun genel olarak kabul edilen yoldan daha iyi olduğunu düşünün. Genel olarak kabul edilen şekilde, en azından arayüzlerinizde, daha iyi veya daha kötü için sadık kalın.

Somut fikirlere sadık kalın

Örneğin, MVC çerçevenizin "model" kısmının bir veritabanı için bir ön uç olduğu gerçeğini saklamaya çalışmayın. "Veritabanlarını" çevreleyen iyi bilinen kelime dağarcığından yararlanın. Yabancı anahtarların ne olduğunu biliyorum. Satır ve sütunların ne olduğunu biliyorum. Bu terimlerle benimle konuş.

Gerekli bilgileri soyutlamayın

Somut fikirlerle çalışmaya benzer. Veritabanlarındaki dosyalar, veritabanları veya satırlarla uğraştığımızı gizlemeyin. Bunları biliyorum. Liste gibi bir kapsayıcıyla uğraşıyorsam, ortak işlemlerin algoritmik karmaşıklığını bilmek için iyi bir şansım var. Bana sadece bir "bağlantılı liste" veya "dizi" diyerek bunu basitleştirebilirsiniz. Büyük bir fikir kümesi aniden ne yaptığınıza dayanacak ve hepsi birden anlam kazanacak. Soruna uygulamak için zaten zengin ve kullanışlı bir terminoloji seti ile geleceğimde öğrenmem gereken kendi fikir setinizi yaratmayın.

Kelime dağarcığımda ihtiyacım olan terimlerin sayısını azalt

API'nizi herhangi bir tür resim dosyası açmak için kullanıyorsanız, pngs vs gifs vs jpgs hakkında çok fazla düşünmem gerekmemelidir. Bunu benim için yapacaksın. Bu sizin temel yetkinliğiniz, benim değil. Bunu benim için yapacak bir sihir olduğuna dair belirsiz bir anlayışım var.


10

Yararlı bir API aşağıdakilere sahiptir:

  • Kısa ve kapsamlı belgeler. Bir görevin nasıl uygulanacağını araştırırsam, API'nın birkaç dakika içinde bunu yapabilme yeteneğine sahip olup olmadığını öğrenebilirim. Bu, metnin kısalığı ve kaynağın düzeni ile elde edilir. Belgeler, nasıl kullanılacağına dair örnekler sunar ve ayrıca okuyucu hakkında herhangi bir varsayımda bulunmaz.
  • Geniş, aktif bir topluluk. Forumlar, IRC kanalları, posta listeleri vb. Bulduğumda, aktif katılımcılarla yeni adamlara yardım etmeye istekli olduğumda stoklanıyorum. Bunun daha büyük projeler için genellikle geçerli olduğunu anlıyorum, ancak yine de çaba gösterilmesi gereken bir şey olacaktır.
  • Tutarlılık. Aslında API kullandığımda , bir yöntemi çağırdığımda veya bu yöntemin XAPI'nin geri kalanı tarafından belirlenen kuraldan tamamen farklı olduğunu keşfettiğimde hiçbir şekilde şok olmak istemiyorum .

Tutarlılık hayır olmalıdır. 1 şey. Docs ikinci geliyor
treecoder

Tutarlılık diller için de geçerlidir: PHP ve JavaScript'ten hoşlanmama esas olarak tutarlılık eksikliğinden kaynaklanmaktadır.
dodgy_coder


1
  • Bir şey yap ve harika yap.
  • Kullanımı kolay, kötüye kullanımı zor.
  • Genişletilmesi kolaydır.
  • İyi belgelenmiş.
  • Tutarlı stil.

0

Bu soru NetBeans ekibinden Jaroslav Tulach tarafından "Pratik API Tasarımı: Bir Java Framework Mimarının İtirafları" bölümünde ele alınmıştır.


-1

En basit kullanışlı arayüz ve iyi adlandırma kuralları.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.