API ที่ดีมีอะไรที่เหมือนกัน? [ปิด]


15

มันเกี่ยวกับ API ที่ยอดเยี่ยมอะไรที่ทำให้มันยอดเยี่ยม ฉันคิดว่าการปฏิบัติตาม "ทำสิ่งหนึ่งสิ่งใดและทำได้ดี" มนต์เป็นสัญญาณที่ดีและการทำแผนที่ที่ดีกับโดเมนปัญหานั้นเป็นสิ่งสำคัญ แต่ API ที่ดีมีอะไรที่เหมือนกัน?


1
คุณช่วยรายการ "API ที่ยอดเยี่ยม" บางรายการได้หรือไม่ โดยส่วนตัวแล้วฉันรู้สึกประหลาดใจในแง่บวกโดย Qt
BenjaminB

กรอบซินาตร้าโปรแกรมประยุกต์บนเว็บเป็น API ที่ชื่นชอบ มันทำสิ่งหนึ่งและทำได้ดี
dodgy_coder

คำตอบ:


17

คุณต้องระมัดระวังในการหลีกเลี่ยงการเพิ่มคำศัพท์ใหม่เพื่อประโยชน์ของ API ของคุณ API โปรดของฉันอธิบายสิ่งต่าง ๆ ให้ฉันด้วยคำศัพท์ที่ฉันเข้าใจอยู่แล้ว ตามเส้นเหล่านั้น:

อย่าเพิ่ม abstractions มากเกินไปบนสิ่งที่คุณกำลังสร้าง ง่าย ๆ เข้าไว้.

ฉันต้องคิดถึงสิ่งที่เป็นนามธรรมประมาณครึ่งหนึ่งของชั้น อย่าทำให้ฉันคิดเพิ่มเลเยอร์พิเศษ อย่าให้สิ่งใหม่มากเกินไปในการเรียนรู้ที่จะไม่เพิ่มคุณค่าให้กับเป้าหมายสุดท้ายของฉัน ตัวอย่างเช่นหลีกเลี่ยงการใช้คลาสไฟล์พิเศษของคุณเองที่ทำงานแตกต่างกันแล้วประเภทไฟล์ของภาษาทำให้คุณคิดว่าวิธีของคุณดีกว่าวิธีที่ยอมรับกันโดยทั่วไป ใช้วิธีการที่ได้รับการยอมรับอย่างน้อยที่สุดในอินเทอร์เฟซของคุณเพื่อให้ดีขึ้นหรือแย่ลง

ติดกับความคิดที่เป็นรูปธรรม

ตัวอย่างเช่นอย่าพยายามซ่อนความจริงที่ว่าส่วน "model" ของกรอบงาน MVC ของคุณเป็นส่วนหน้าสำหรับฐานข้อมูล ใช้ประโยชน์จากคำศัพท์ที่รู้จักกันดีโดยรอบ "ฐานข้อมูล" ฉันรู้ว่ากุญแจต่างประเทศคืออะไร ฉันรู้ว่าแถวและคอลัมน์คืออะไร พูดคุยกับฉันในแง่เหล่านี้

อย่าย่อท้อความรู้ที่จำเป็น

คล้ายกับการทำงานกับแนวคิดที่เป็นรูปธรรม อย่าซ่อนความจริงที่ว่าเรากำลังจัดการกับไฟล์หรือฐานข้อมูลหรือแถวในฐานข้อมูล ฉันรู้สิ่งเหล่านี้ ถ้าฉันจัดการกับคอนเทนเนอร์เช่น List มีโอกาสที่ดีที่ฉันต้องทราบความซับซ้อนของอัลกอริทึมของการทำงานทั่วไป คุณสามารถทำให้มันง่ายขึ้นมากโดยเพียงแค่บอก "รายการที่ลิงก์" หรือ "อาร์เรย์" ให้ฉัน ความคิดชุดใหญ่จะถูกนำมาใช้ทันทีในสิ่งที่คุณทำและทุกอย่างจะเข้าท่า อย่าสร้างชุดความคิดของคุณเองที่ฉันต้องเรียนรู้เมื่อฉันจะมาพร้อมกับชุดคำศัพท์ที่มีประโยชน์และหลากหลายเพื่อนำไปใช้กับปัญหา

ลดจำนวนคำศัพท์ที่ฉันต้องการในคำศัพท์ของฉัน

ถ้าฉันใช้ API ของคุณเพื่อเปิดไฟล์รูปภาพทุกประเภทฉันไม่ควรคิดถึง pngs vs gifs vs jpgs มากนัก คุณจะทำเพื่อฉัน มันเป็นความสามารถหลักของคุณไม่ใช่ของฉัน ฉันมีความเข้าใจที่คลุมเครือว่าคุณมีเวทย์มนตร์ที่จะทำสิ่งนี้ให้ฉัน


10

API ที่มีประโยชน์มีดังต่อไปนี้:

  • เอกสารที่รัดกุมและทั่วถึง ถ้าฉันกำลังค้นหาวิธีการใช้งานฉันสามารถค้นหาว่า API มีความสามารถในการทำเช่นนั้นภายในไม่กี่นาที สิ่งนี้สามารถทำได้โดยความสั้นของข้อความและโครงร่างของทรัพยากร เอกสารประกอบให้ตัวอย่างเกี่ยวกับวิธีการใช้และยังไม่มีข้อสันนิษฐานเกี่ยวกับผู้อ่าน
  • ชุมชนขนาดใหญ่ที่ใช้งานอยู่ ฉันถูก stoked เมื่อฉันค้นหาฟอรัม IRC รายการส่งเมล ฯลฯ โดยผู้เข้าร่วมที่มีความเต็มใจที่จะช่วยเหลือพวกใหม่ ฉันเข้าใจว่านี่เป็นกรณีของโครงการขนาดใหญ่ แต่ก็ยังเป็นสิ่งที่จะพยายาม
  • ความมั่นคง เมื่อฉันใช้ API ฉันไม่ต้องการตกใจเมื่อฉันเรียกใช้เมธอดหรือค้นพบวิธีการXนั้นแตกต่างจากการประชุมที่กำหนดโดยส่วนที่เหลือของ API อย่างสิ้นเชิง

ความสอดคล้องไม่ควรมี 1 อย่าง เอกสารมาสอง
treecoder

ความสอดคล้องกับภาษาเช่นกัน: ฉันไม่ชอบ PHP และ JavaScript เป็นส่วนใหญ่เพราะขาดความสอดคล้อง
dodgy_coder


1
  • ทำสิ่งหนึ่งและทำมันให้ดี
  • ใช้งานง่ายยากที่จะใช้ผิดประเภท
  • ยืดได้ง่าย
  • บันทึกไว้อย่างดี
  • สไตล์ที่สม่ำเสมอ

0

คำถามนี้ได้รับการแก้ไขใน "การออกแบบ API เชิงปฏิบัติ: คำสารภาพของสถาปนิก Java Framework" โดย Jaroslav Tulach จากทีม NetBeans


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.