โดเมนความรู้ของเราเกี่ยวข้องกับคนที่เดินข้ามแผ่นบันทึกความกดดันด้วยเท้าเปล่า เราทำการจดจำรูปภาพซึ่งส่งผลให้วัตถุของคลาส 'เท้า' หากเท้ามนุษย์ถูกจดจำในข้อมูลเซ็นเซอร์
มีการคำนวณหลายอย่างที่ต้องดำเนินการกับข้อมูลของเท้า
ตอนนี้ API ตัวไหนจะดีกว่า:
class Foot : public RecognizedObject {
MaxPressureFrame getMaxPressureFrame();
FootAxis getFootAxis();
AnatomicalZones getAnatomicalZones();
// + similar getters for other calculations
// ...
}
หรือ:
class Foot : public RecognizedObject {
virtual CalculationBase getCalculation(QString aName);
// ...
}
ตอนนี้มีโปรและคอนแสตนท์จำนวนมากที่ฉันสามารถหาได้ แต่ฉันก็ไม่สามารถตัดสินใจได้ว่าอะไรคือสิ่งที่สำคัญที่สุด หมายเหตุนี่เป็นแอปพลิเคชั่นสำหรับผู้ใช้ไม่ใช่ไลบรารี่ซอฟต์แวร์ที่เราขาย
คำแนะนำใด ๆ?
โปรบางตัวสำหรับวิธีแรกอาจเป็น:
- KISS - ทุกอย่างเป็นรูปธรรมมาก API แต่การใช้งานเช่นกัน
- ค่าส่งคืนที่พิมพ์อย่างมาก
- การสืบทอดจากคลาสนี้เป็นสิ่งที่พิสูจน์ได้ ไม่มีสิ่งใดสามารถแทนที่ได้ถูกเพิ่มเข้ามาเท่านั้น
- API ปิดมากไม่มีอะไรเข้าไปไม่มีสิ่งใดถูกแทนที่ได้ดังนั้นจึงน้อยผิดไป
แย้งบางส่วนของ:
- จำนวนผู้ได้รับจะเพิ่มขึ้นตามการคำนวณใหม่ทุกครั้งที่เราประดิษฐ์ได้รับเพิ่มในรายการ
- API มีแนวโน้มที่จะเปลี่ยนแปลงมากขึ้นและหากมีการแนะนำให้ใช้การเปลี่ยนแปลงแบบแบ่งย่อยเราจำเป็นต้องมี API รุ่นใหม่คือ Foot2
- ในกรณีที่นำคลาสกลับมาใช้ใหม่ในโครงการอื่นเราอาจไม่ต้องการการคำนวณทุกครั้ง
โปรบางตัวสำหรับแนวทางที่สอง:
- ยืดหยุ่นมากขึ้น
- api มีโอกาสน้อยที่จะเปลี่ยนแปลง (สมมติว่าเราได้นามธรรมถูกต้องถ้าไม่การเปลี่ยนแปลงจะมีค่าใช้จ่ายมากขึ้น)
แย้งบางส่วนของ:
- พิมพ์อย่างอิสระ ไม่จำเป็นต้องใช้ทุกการโทร
- พารามิเตอร์สตริง - ฉันมีความรู้สึกไม่ดีเกี่ยวกับเรื่องนั้น (การแตกกิ่งกับค่าสตริง ... )
- ไม่มีกรณี / ข้อกำหนดการใช้งานในปัจจุบันที่กำหนดความยืดหยุ่นเป็นพิเศษ แต่อาจมีในอนาคต
- API กำหนดข้อ จำกัด : การคำนวณทุกครั้งต้องได้รับมาจากคลาสพื้นฐาน การคำนวณจะถูกบังคับด้วยวิธีการ 1 วิธีนี้และการผ่านพารามิเตอร์พิเศษจะเป็นไปไม่ได้นอกจากว่าเราจะกำหนดวิธีการส่งผ่านพารามิเตอร์ที่มีพลังและยืดหยุ่นมากยิ่งขึ้นซึ่งจะเพิ่มความซับซ้อนมากยิ่งขึ้น
getCalculation()
ตื่นตาตื่นใจ
enum
และเปลี่ยนเป็นค่าได้ ยังฉันคิดว่าตัวเลือกที่สองคือความชั่วร้ายเพราะมันเบี่ยงเบนจาก KISS