के लिए विचारों को दोबारा करने की आवश्यकता है मुझे एक राक्षस विरासत मिला है।तीर एंटी-पैटर्न
यह .NET 1.1 एप्लिकेशन प्रक्रियाओं के रूप में मज़ेदार है जो हेल्थकेयर दावा भुगतान (एएनएसआई 835) मानकों के अनुरूप है, लेकिन यह एक राक्षस है। संसाधित की जाने वाली सूचना स्वास्थ्य देखभाल दावों, ईओबी, और प्रतिपूर्ति से संबंधित है। इन फ़ाइलों में ऐसे रिकॉर्ड होते हैं जिनमें पहले कुछ पदों और डेटा फ़ील्ड में पहचानकर्ता होता है जो उस प्रकार के रिकॉर्ड के लिए चश्मे के अनुसार स्वरूपित होते हैं। कुछ रिकॉर्ड आईडी नियंत्रण सेगमेंट आईडी हैं, जो एक विशेष प्रकार के लेनदेन से संबंधित रिकॉर्ड के समूह को सीमित करते हैं।
फ़ाइल को संसाधित करने के लिए, मेरा छोटा राक्षस पहला रिकॉर्ड पढ़ता है, यह निर्धारित करता है कि किस प्रकार का लेनदेन हो रहा है, फिर यह अन्य रिकॉर्ड को संसाधित करना शुरू करता है कि यह किस प्रकार के लेनदेन पर वर्तमान में प्रसंस्करण कर रहा है। ऐसा करने के लिए, अगर यह नेस्टेड का उपयोग करता है। चूंकि कई रिकॉर्ड प्रकार हैं, इसलिए ऐसे कई निर्णय हैं जिन्हें बनाने की आवश्यकता है। प्रत्येक निर्णय में कुछ प्रसंस्करण और 2-3 अन्य निर्णय शामिल होते हैं जिन्हें पिछले निर्णयों के आधार पर किया जाना चाहिए। इसका मतलब है घोंसला अगर बहुत घोंसला है। यही वह जगह है जहां मेरी समस्या झूठ है।
यह 775 लाइन लंबी होने पर घोंसला हुआ है। हाँ य़ह सही हैं। सात-सौ-और-फीफ-किशोर रेखाएं। मैं कोई कोड विश्लेषण विशेषज्ञ नहीं हूं, इसलिए मैंने कुछ फ्रीवेयर विश्लेषण टूल डाउनलोड किए और 49 की मैककेब साइक्लोमैटिक कॉम्प्लेक्सिटी रेटिंग के साथ आया। वे मुझे बताते हैं कि यह एक बहुत अधिक संख्या है। अटलांटा क्षेत्र में पराग की गणना के रूप में उच्च जहां 100 उच्च के लिए मानक है और समाचार कहता है "आज की पराग गणना 1,523 है"। यह तीर एंटी-पैटर्न के बेहतरीन उदाहरणों में से एक है जिसे मैंने कभी देखने के लिए प्रबल किया है। उच्चतम पर, इंडेंटेशन 15 टैब गहरा हो जाता है।
मेरा सवाल यह है कि, आप इस तरह की चीज़ को दोबारा बदलने या पुन: स्थापित करने के लिए क्या तरीके सुझाएंगे?
मैंने कुछ समय विचारों की तलाश में बिताया है, लेकिन कुछ भी मुझे एक अच्छा पैर नहीं दिया है। उदाहरण के लिए, एक स्तर के लिए गार्ड की स्थिति को प्रतिस्थापित करना एक विधि है। मेरे पास उनमें से केवल एक है। एक घोंसला नीचे, चौदह जाने के लिए।
शायद एक डिज़ाइन पैटर्न है जो सहायक हो सकता है। क्या कमांड का चेन इस तक पहुंचने का एक तरीका होगा? ध्यान रखें कि इसे .NET 1.1 में रहना चाहिए।
किसी भी और सभी विचारों के लिए धन्यवाद।
दिलचस्प विचार। मुझे यह समझने में परेशानी हो रही है कि यह कोड में कैसा दिखाई देगा। –