सही या गलत तरीके से, मैं वर्तमान में इस विश्वास के साथ हूं कि मुझे हमेशा अपने कोड को यथासंभव मजबूत बनाने की कोशिश करनी चाहिए, भले ही इसका मतलब अनावश्यक कोड / चेक में जोड़ना हो जो मुझे पता है कि अभी किसी काम का नहीं होगा, लेकिन वे रेखा से नीचे वर्षों की x राशि हो सकती है।
उदाहरण के लिए, मैं वर्तमान में एक मोबाइल एप्लिकेशन पर काम कर रहा हूं जिसमें यह कोड है:
public static CalendarRow AssignAppointmentToRow(Appointment app, List<CalendarRow> rows)
{
//1. Is rows equal to null? - This will be the case if this is the first appointment.
if (rows == null) {
rows = new List<CalendarRow> ();
}
//2. Is rows empty? - This will be the case if this is the first appointment / some other unknown reason.
if(rows.Count == 0)
{
rows.Add (new CalendarRow (0));
rows [0].Appointments.Add (app);
}
//blah...
}
विशेष रूप से खंड दो को देखते हुए, मुझे पता है कि यदि खंड एक सत्य है, तो खंड दो भी सत्य होगा। मैं किसी भी कारण के बारे में नहीं सोच सकता कि क्यों खंड एक गलत होगा और खंड दो सही मूल्यांकन करता है, जो दूसरे if
कथन को निरर्थक बनाता है ।
हालांकि, भविष्य में एक मामला हो सकता है जहां यह दूसरा if
बयान वास्तव में आवश्यक है, और एक ज्ञात कारण के लिए।
कुछ लोग शुरू में इसे देख सकते हैं और सोच सकते हैं कि मैं भविष्य के साथ दिमाग में प्रोग्रामिंग कर रहा हूं, जो जाहिर है कि अच्छी बात है। लेकिन मुझे कुछ उदाहरणों का पता है जहां इस तरह के कोड में मुझसे "छिपे हुए" कीड़े हैं। इसका अर्थ यह है कि मुझे यह पता लगाने में अधिक समय लगता है कि फ़ंक्शन तब क्यों xyz
कर रहा है abc
जब उसे वास्तव में करना चाहिए def
।
दूसरी ओर, ऐसे कई उदाहरण भी हैं जहां इस तरह के कोड ने नए व्यवहारों के साथ कोड को बढ़ाने के लिए इसे बहुत आसान बना दिया है, क्योंकि मुझे वापस जाने की ज़रूरत नहीं है और यह सुनिश्चित करना है कि सभी संबंधित चेक ठीक हैं।
क्या इस तरह के कोड के लिए कोई सामान्य नियम-आधारित दिशा - निर्देश हैं? (मुझे यह सुनने में दिलचस्पी होगी कि क्या यह अच्छा या बुरा अभ्यास माना जाएगा?)
NB: यह इस सवाल के समान माना जा सकता है , हालांकि उस सवाल के विपरीत, मुझे लगता है कि कोई समय सीमा नहीं है एक जवाब चाहते हैं।
TLDR: क्या मुझे भविष्य में इसे और अधिक मजबूत बनाने के लिए निरर्थक कोड जोड़ने के लिए इतनी दूर जाना चाहिए?
if(rows.Count == 0)
ऐसा कभी नहीं होगा, तो आप ऐसा होने पर एक अपवाद उठा सकते हैं - और जांच करें कि आपकी धारणा गलत क्यों हो गई।
rows
कभी अशक्त होगा? कम से कम .NET में, संग्रह अच्छा होने के लिए कोई अच्छा कारण नहीं है। खाली , निश्चित, लेकिन अशक्त नहीं । मैं एक अपवाद फेंक दूंगा यदि rows
अशक्त है, क्योंकि इसका मतलब है कि कॉल करने वाले द्वारा तर्क में एक चूक है।