4
ส่งคืนอินเตอร์เฟสหรือคลาส
สมมติว่าฉันมีวิธี public List<User> GetBatchOfUsers(IEnumerable<int> userIDs) { List<User> users = new List<User>(); // some database stuff return users; } ฉันได้อ่านว่ามันจะดีกว่าที่จะกลับมาอินเตอร์เฟซ (อย่างใดอย่างหนึ่งIListหรือIEnumerable) Listเมื่อเทียบกับกลับ ข้อโต้แย้งบางประการที่ฉันเคยได้ยินเกี่ยวกับการทำเช่นนั้นคือมันซ่อนข้อมูลและให้ความยืดหยุ่นแก่นักพัฒนา API ในการเปลี่ยนการแสดงข้อมูลภายในในภายหลัง ความกังวลของฉันเกี่ยวกับการส่งคืนIEnumerableคือคุณสูญเสียฟังก์ชันการทำงานเช่นการเข้าถึงแบบสุ่มและCountคุณสมบัติ ฉันรู้ว่าการยอมรับIEnumerableพารามิเตอร์เป็นสิ่งที่สมเหตุสมผลเนื่องจากทำให้ผู้บริโภคมีความยืดหยุ่นที่ดีที่สุดในการส่งข้อมูลไปยังวิธีการของฉันซึ่งเป็นข้อกำหนดที่เรียบง่ายสำหรับวิธีการใช้งาน แนวปฏิบัติที่ดีที่สุดสำหรับประเภทส่งคืนคืออะไร