ฉันกำลังสร้างแบบจำลองวัตถุสำหรับอุปกรณ์ที่มีหลายช่องทาง คำนามที่ใช้ระหว่างลูกค้าและฉันและChannel
ChannelSet
("ชุด" ไม่ถูกต้องทางความหมายเพราะเป็นชุดและชุดที่ไม่ถูกต้อง แต่นั่นเป็นปัญหาสำหรับเวลาที่แตกต่างกัน)
ฉันใช้ C # นี่คือตัวอย่างการใช้งานของChannelSet
:
// load a 5-channel ChannelSet
ChannelSet channels = ChannelSetFactory.FromFile("some_5_channel_set.json");
Console.Write(channels.Count);
// -> 5
foreach (Channel channel in channels) {
Console.Write(channel.Average);
Console.Write(", ");
}
// -> 0.3, 0.3, 0.9, 0.1, 0.2
ทั้งหมดคือสำรวย อย่างไรก็ตามลูกค้าไม่ใช่โปรแกรมเมอร์และพวกเขาจะสับสนอย่างแน่นอนโดยไม่มีการทำดัชนี - ช่องแรกคือช่องที่ 1 สำหรับพวกเขา แต่เพื่อประโยชน์ของความสอดคล้องกับ C # ผมต้องการที่จะให้ChannelSet
จัดทำดัชนีจากศูนย์
นี่เป็นสาเหตุที่ทำให้เกิดการเชื่อมต่อระหว่างทีม dev ของฉันและลูกค้าเมื่อพวกเขามีปฏิสัมพันธ์ แต่ที่แย่กว่านั้นคือความไม่สอดคล้องกันของวิธีการจัดการภายใน codebase นั้นเป็นปัญหาที่อาจเกิดขึ้นได้ ตัวอย่างเช่นนี่คือหน้าจอ UI ที่ผู้ใช้ปลายทาง ( ผู้ที่คิดว่าเป็นดัชนี 1 รายการ ) กำลังแก้ไขช่องทางที่ 13:
ที่Save
ปุ่มในที่สุดก็จะส่งผลให้บางรหัส หากChannelSet
มีการจัดทำดัชนี 1 รายการ:
channels.GetChannel(13).SomeProperty = newValue; // notice: 13
หรือนี่ถ้ามันเป็นศูนย์ดัชนี:
channels.GetChannel(12).SomeProperty = newValue; // notice: 12
ฉันไม่แน่ใจว่าจะจัดการเรื่องนี้อย่างไร ฉันรู้สึกว่าเป็นวิธีปฏิบัติที่ดีในการเก็บรายการสิ่งที่เรียงลำดับและจัดทำดัชนี ( ChannelSet
) ที่สอดคล้องกับอาเรย์และรายการอินเตอร์เฟสอื่น ๆ ทั้งหมดใน C # จักรวาล (โดยการทำดัชนีเป็นศูนย์ChannelSet
) แต่แล้วโค้ดทุกส่วนระหว่าง UI และแบ็กเอนด์จะต้องมีการแปล (ลบด้วย 1) และเราทุกคนรู้ว่าข้อผิดพลาดแบบร้ายกาจและเป็นเรื่องธรรมดาอยู่แล้ว
ดังนั้นการตัดสินใจแบบนี้จะกัดคุณหรือไม่? ฉันควรเป็นศูนย์ดัชนีหรือหนึ่งดัชนี?