มันเกี่ยวกับ API ที่ยอดเยี่ยมอะไรที่ทำให้มันยอดเยี่ยม ฉันคิดว่าการปฏิบัติตาม "ทำสิ่งหนึ่งสิ่งใดและทำได้ดี" มนต์เป็นสัญญาณที่ดีและการทำแผนที่ที่ดีกับโดเมนปัญหานั้นเป็นสิ่งสำคัญ แต่ API ที่ดีมีอะไรที่เหมือนกัน?
มันเกี่ยวกับ API ที่ยอดเยี่ยมอะไรที่ทำให้มันยอดเยี่ยม ฉันคิดว่าการปฏิบัติตาม "ทำสิ่งหนึ่งสิ่งใดและทำได้ดี" มนต์เป็นสัญญาณที่ดีและการทำแผนที่ที่ดีกับโดเมนปัญหานั้นเป็นสิ่งสำคัญ แต่ API ที่ดีมีอะไรที่เหมือนกัน?
คำตอบ:
คุณต้องระมัดระวังในการหลีกเลี่ยงการเพิ่มคำศัพท์ใหม่เพื่อประโยชน์ของ API ของคุณ API โปรดของฉันอธิบายสิ่งต่าง ๆ ให้ฉันด้วยคำศัพท์ที่ฉันเข้าใจอยู่แล้ว ตามเส้นเหล่านั้น:
ฉันต้องคิดถึงสิ่งที่เป็นนามธรรมประมาณครึ่งหนึ่งของชั้น อย่าทำให้ฉันคิดเพิ่มเลเยอร์พิเศษ อย่าให้สิ่งใหม่มากเกินไปในการเรียนรู้ที่จะไม่เพิ่มคุณค่าให้กับเป้าหมายสุดท้ายของฉัน ตัวอย่างเช่นหลีกเลี่ยงการใช้คลาสไฟล์พิเศษของคุณเองที่ทำงานแตกต่างกันแล้วประเภทไฟล์ของภาษาทำให้คุณคิดว่าวิธีของคุณดีกว่าวิธีที่ยอมรับกันโดยทั่วไป ใช้วิธีการที่ได้รับการยอมรับอย่างน้อยที่สุดในอินเทอร์เฟซของคุณเพื่อให้ดีขึ้นหรือแย่ลง
ตัวอย่างเช่นอย่าพยายามซ่อนความจริงที่ว่าส่วน "model" ของกรอบงาน MVC ของคุณเป็นส่วนหน้าสำหรับฐานข้อมูล ใช้ประโยชน์จากคำศัพท์ที่รู้จักกันดีโดยรอบ "ฐานข้อมูล" ฉันรู้ว่ากุญแจต่างประเทศคืออะไร ฉันรู้ว่าแถวและคอลัมน์คืออะไร พูดคุยกับฉันในแง่เหล่านี้
คล้ายกับการทำงานกับแนวคิดที่เป็นรูปธรรม อย่าซ่อนความจริงที่ว่าเรากำลังจัดการกับไฟล์หรือฐานข้อมูลหรือแถวในฐานข้อมูล ฉันรู้สิ่งเหล่านี้ ถ้าฉันจัดการกับคอนเทนเนอร์เช่น List มีโอกาสที่ดีที่ฉันต้องทราบความซับซ้อนของอัลกอริทึมของการทำงานทั่วไป คุณสามารถทำให้มันง่ายขึ้นมากโดยเพียงแค่บอก "รายการที่ลิงก์" หรือ "อาร์เรย์" ให้ฉัน ความคิดชุดใหญ่จะถูกนำมาใช้ทันทีในสิ่งที่คุณทำและทุกอย่างจะเข้าท่า อย่าสร้างชุดความคิดของคุณเองที่ฉันต้องเรียนรู้เมื่อฉันจะมาพร้อมกับชุดคำศัพท์ที่มีประโยชน์และหลากหลายเพื่อนำไปใช้กับปัญหา
ถ้าฉันใช้ API ของคุณเพื่อเปิดไฟล์รูปภาพทุกประเภทฉันไม่ควรคิดถึง pngs vs gifs vs jpgs มากนัก คุณจะทำเพื่อฉัน มันเป็นความสามารถหลักของคุณไม่ใช่ของฉัน ฉันมีความเข้าใจที่คลุมเครือว่าคุณมีเวทย์มนตร์ที่จะทำสิ่งนี้ให้ฉัน
API ที่มีประโยชน์มีดังต่อไปนี้:
X
นั้นแตกต่างจากการประชุมที่กำหนดโดยส่วนที่เหลือของ API อย่างสิ้นเชิงคำถามนี้ได้รับการแก้ไขใน "การออกแบบ API เชิงปฏิบัติ: คำสารภาพของสถาปนิก Java Framework" โดย Jaroslav Tulach จากทีม NetBeans
อินเทอร์เฟซที่มีประโยชน์ที่สุดและการตั้งชื่อที่ดี