मैं एक डिवाइस के लिए एक ऑब्जेक्ट मॉडल बना रहा हूं जिसमें कई चैनल हैं। ग्राहक और मैं के बीच उपयोग की जाने वाली संज्ञा 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 है। लेकिन, सी # के साथ संगतता के लिए, मैं ChannelSetशून्य से अनुक्रमित रखना चाहता हूं ।
जब वे बातचीत करते हैं तो मेरी देव टीम और क्लाइंट्स के बीच कुछ डिस्कशन होना निश्चित है। लेकिन इससे भी बदतर, कोडबेस के भीतर इसे कैसे संभाला जाता है, इस बारे में कोई असंगतता एक संभावित समस्या है। उदाहरण के लिए, यहां एक UI स्क्रीन है जहां अंतिम उपयोगकर्ता ( जो 1 अनुक्रमण के संदर्भ में सोचता है ) चैनल 13 का संपादन कर रहा है:

वह Saveबटन अंततः कुछ कोड में परिणाम करने वाला है। यदि ChannelSet1 अनुक्रमित है:
channels.GetChannel(13).SomeProperty = newValue; // notice: 13
या यदि यह शून्य अनुक्रमित है:
channels.GetChannel(12).SomeProperty = newValue; // notice: 12
मुझे यकीन नहीं है कि इसे कैसे संभालना है। मुझे लगता ChannelSetहै कि सी # ब्रह्मांड (शून्य अनुक्रमण द्वारा ChannelSet) अन्य सभी सरणी और सूची इंटरफेस के अनुरूप (ऑर्डर ) चीजों की क्रमबद्ध, पूर्णांक-अनुक्रमित सूची रखने के लिए अच्छा अभ्यास है । लेकिन फिर यूआई और बैकएंड के बीच के हर टुकड़े को एक अनुवाद (1 से घटाना) की आवश्यकता होगी, और हम सभी जानते हैं कि पहले से ही त्रुटिपूर्ण और सामान्य ऑफ-बाय-वन त्रुटियां कितनी हैं।
तो, क्या इस तरह का निर्णय आपको कभी काट सकता है? क्या मुझे शून्य सूचकांक या एक सूचकांक चाहिए?