เมื่อพูดคุยเกี่ยวกับ API ระหว่างระบบ (ในระดับธุรกิจ) มักจะมีมุมมองที่แตกต่างกันสองประการในทีมของเรา: บางคนชอบมากกว่า - ให้พูดว่า - วิธีนามธรรมทั่วไป
ตัวอย่าง: การออกแบบ API ค้นหา "บุคคล" แบบง่าย รุ่นที่เป็นรูปธรรมจะเป็น
searchPerson(String name, boolean soundEx,
String firstName, boolean soundEx,
String dateOfBirth)
คนที่ชื่นชอบเวอร์ชั่นคอนกรีตพูดว่า:
- API คือการจัดทำเอกสารด้วยตนเอง
- มันง่ายที่จะเข้าใจ
- มันง่ายต่อการตรวจสอบ (คอมไพเลอร์หรือเป็นเว็บเซอร์: การตรวจสอบสคีมา)
- จูบ
กลุ่มคนอื่น ๆ ในทีมของเราจะพูดว่า "นั่นเป็นเพียงรายการของเกณฑ์การค้นหา"
searchPerson(List<SearchCriteria> criteria)
กับ
SearchCritera {
String parameter,
String value,
Map<String, String> options
}
ด้วยอาจทำให้ "พารามิเตอร์" บางประเภทการแจงนับ
ผู้เสนอพูดว่า:
- โดยไม่ต้องเปลี่ยน (ประกาศ) API การดำเนินการสามารถเปลี่ยนแปลงได้เช่นการเพิ่มเกณฑ์หรือตัวเลือกเพิ่มเติม แม้ว่าจะไม่มีการซิงโครไนซ์การเปลี่ยนแปลงดังกล่าว ณ เวลาที่ใช้
- เอกสารเป็นสิ่งที่จำเป็นแม้จะมีรูปแบบที่เป็นรูปธรรม
- การตรวจสอบความถูกต้องของสคีมาถูก overrated บ่อยครั้งที่คุณต้องตรวจสอบความถูกต้องเพิ่มเติมสคีมาไม่สามารถรองรับทุกกรณี
- เรามี API ที่คุ้นเคยกับระบบอื่นแล้ว - นำมาใช้ซ้ำ
ข้อโต้แย้งคือ
- เอกสารจำนวนมากเกี่ยวกับพารามิเตอร์ที่ถูกต้องและการรวมกันของพารามิเตอร์ที่ถูกต้อง
- ความพยายามในการสื่อสารที่มากขึ้นเพราะมันยากที่จะเข้าใจสำหรับทีมอื่น ๆ
มีวิธีปฏิบัติที่ดีที่สุดหรือไม่? วรรณกรรม?