हाल ही के बग फिक्स ने मुझे टीम के अन्य सदस्यों द्वारा लिखे गए कोड पर जाने की आवश्यकता थी, जहां मुझे यह मिला (यह C # है):
return (decimal)CostIn > 0 && CostOut > 0 ? (((decimal)CostOut - (decimal)CostIn) / (decimal)CostOut) * 100 : 0;
अब, उन सभी जातियों के लिए एक अच्छा कारण है, यह अभी भी पालन करना बहुत मुश्किल लगता है। गणना में एक मामूली बग था और मुझे इस मुद्दे को ठीक करने के लिए इसे अनसुना करना पड़ा।
मुझे पता है कि कोड समीक्षा से इस व्यक्ति की कोडिंग शैली, और उसका दृष्टिकोण यह है कि छोटी लगभग हमेशा बेहतर होती है। और निश्चित रूप से वहाँ मूल्य है: हमने सभी सशर्त तर्क की अनावश्यक रूप से जटिल श्रृंखलाएं देखी हैं जिन्हें कुछ अच्छी तरह से रखे गए ऑपरेटरों के साथ बाँधा जा सकता है। लेकिन वह स्पष्ट रूप से एक बयान में crammed ऑपरेटरों की श्रृंखला के बाद से मुझ पर अधिक निपुण है।
यह, ज़ाहिर है, अंततः शैली का मामला है। लेकिन उस बिंदु को पहचानने पर कुछ भी लिखा या शोध किया गया है जहां कोड संक्षिप्तता के लिए प्रयास करना उपयोगी होना बंद हो जाता है और समझ में बाधा बन जाता है?
जातियों का कारण एंटिटी फ्रेमवर्क है। डीबी को इन्हें अशक्त प्रकारों के रूप में संग्रहीत करने की आवश्यकता है। दशमलव? C # में दशमलव के बराबर नहीं है और इसे डाले जाने की आवश्यकता है।
CostOutकि बराबर है Double.Epsilon, और इसलिए शून्य से अधिक है। लेकिन (decimal)CostOutउस मामले में शून्य है, और हमारे पास शून्य त्रुटि से एक विभाजन है। पहला कदम कोड को सही होना चाहिए , जो मुझे लगता है कि यह नहीं है। इसे सही करें, परीक्षण के मामले बनाएं और फिर इसे सुरुचिपूर्ण बनाएं । सुरुचिपूर्ण कोड और संक्षिप्त कोड में बहुत कुछ है, लेकिन कभी-कभी संक्षिप्तता लालित्य की आत्मा नहीं होती है।