TOP

रिफैक्टरिंग क्या है?

विवरण

पुनर्रचना (Refactoring) - बाहरी व्यवहार को बदले बिना समझने में आसान और तेजी से संशोधित करने के लिए सॉफ़्टवेयर (सॉफ़्टवेयर) की आंतरिक संरचना में किए गए परिवर्तन। साथ ही, यह सॉफ़्टवेयर के बाहरी व्यवहार को बदले बिना रीफैक्टरिंग के अनुक्रम के अनुप्रयोग के माध्यम से सॉफ़्टवेयर का पुनर्गठन है।


रिफैक्टरिंग के लाभ:

जब आपको रीफैक्टरिंग करने की आवश्यकता हो:

कोड में दुर्गंध आ रही है (Smells Catalog) :

संभावित रिफैक्टरिंग विकल्प

  1. Moving Features Between Objects (वस्तुओं के बीच पूर्ण कोड स्थानांतरण):

    • Move Method (हाइलाइट करने की विधि) - यदि विधि बहुत लंबी है या उसमें कोई कोड है जिसके लिए टिप्पणियों की आवश्यकता है, तो विधि को अलग कर दें।
    • Move Field (गन्तव्य क्षेत्र) - तब निष्पादित किया जाता है जब फ़ील्ड का उपयोग किसी अन्य वर्ग द्वारा उसके निर्धारित स्थान से अधिक बार किया जाता है।
  2. Organizing Data (डेटा व्यवस्था):

    • Encapsulate Field (फ़ील्ड इनकैप्सुलेशन) - OOP के मुख्य सिद्धांतों में से एक एनकैप्सुलेशन, या डेटा छिपाना है। डेटा को सार्वजनिक करके, ऑब्जेक्ट डेटा स्वामी की जानकारी के बिना उसके मूल्यों को पढ़ और बदल सकता है। खैर, हम ऐसी फैडेल को बंद कर देते हैं, निर्देशक अध्याय में प्रस्तुतिकरण करते हैं।
    • Encapsulate Collection (संग्रह एनकैप्सुलेशन) - अक्सर नमूने कक्षा में एकत्र किए जाते हैं। यह संग्रह एक सरणी, सूची, सेट या वेक्टर हो सकता है। गेट्टर विधि को संग्रह ऑब्जेक्ट को स्वयं वापस नहीं करना चाहिए, क्योंकि इससे ग्राहकों को उस वर्ग के ज्ञान के बिना संग्रह की सामग्री को संशोधित करने की अनुमति मिल जाएगी जो इसके मालिक हैं। इसलिए, आपको विधि द्वारा लौटाए गए मान को केवल-पढ़ने के लिए बनाने और तत्वों को जोड़ने/हटाने के लिए तरीके बनाने की आवश्यकता है।
  3. Composing Methods (कोड ничална аур сонъожит карна):

    • Extract Method (हाइलाइट करने की विधि) - यदि कोई कोड का टुकड़ा है जिसे समूहीकृत किया जा सकता है, तो उस टुकड़े को एक अलग विधि में एक ऐसे नाम के साथ रखें जो उसके उद्देश्य का वर्णन करता हो। इस प्रकार, विधि का नाम टिप्पणियों का स्थान होगा।
    • Inline Method (एम्बेडिंग विधि) - कभी-कभी विधि के मुख्य भाग को उस कोड में लेना उपयोगी होता है जो इसे कॉल करता है। कबही-कबही विधि असंगठित ही आत्मा व्याख्या होती है, जिसका नाम है। यह स्थिति तब भी हो सकती है जब कई अलग-अलग विधियाँ हों जिनकी संरचना असफल हो, और इसलिए बेहतर होगा कि उन सभी को एक ही सामान्य विधि में छोड़ दिया जाए और फिर अन्य तरीकों से विधियों को अलग कर दिया जाए।
    • Inline Temp (अस्थायी चर का सम्मिलन) - एक वर्ष का सातिय मित्रों के एक वर्ष का वर्णन मिलता है। कबही-कबही ऐसे चार अन्य रिफैक्टरिंग में में में में में में से 14 मिनट में 4 अन्य रेफैक्टरिंग फैक्टर गार है।
    • Replace Temp with Query (एक विधि कॉल के साथ एक अस्थायी फ़ील्ड बदलना) - इसका उपयोग तब किया जाता है जब किसी अभिव्यक्ति के मूल्य को संग्रहीत करने के लिए अस्थायी चर का उपयोग किया जाता है। इस मामले में, हम अभिव्यक्ति को एक नई विधि से प्रतिस्थापित करते हैं और इस वर्ण के कोड में सभी संदर्भों को एक नई विधि से प्रतिस्थापित करते हैं।
    • Split Temporary Variable (अस्थायी चरागाह को विभाजित करें) - तब लागू होता है जब एक ही अस्थायी चर का उपयोग अलग-अलग परिणामों को निर्दिष्ट करने के लिए कई बार किया जाता है (जब तक कि यह एक लूप के भीतर लूप में उपयोग किया जाने वाला चर न हो और परिणाम को स्टोर करने के लिए न हो)। इस मामले में, हम प्रत्येक असाइनमेंट के लिए एक अलग वेरिएबल बनाते हैं।
  4. Simplifying Conditional Expressions (शर्तों के साथ अभिव्यक्ति को सरल बनाने के लिए):

    • Decompose Conditional (सूरत संचालक का आवेदन) - जब हमारी पास चेक की एक सफ़ार्ट सर्च होती है (इदी-तब-अनैथा) तब आक्स्तिक किया जाता है। यदि आप (यदि), तो आप इसे प्राप्त कर सकते हैं यह ब्रांचिंग के कारण की बेहतर समझ में योगदान देता है, और विधि का नाम कोड के संबंधित टुकड़े के उद्देश्य को स्पष्ट करता है।
    • Consolidate Conditional Expression (सशर्त अभिव्यक्ति का समेकन) - यदि कई स्थितियों की जाँच की जाती है, तो उनके समान परिणाम सामने आते हैं। आपको सभी जांचों को एक सशर्त अभिव्यक्ति या विधि में संयोजित करने की आवश्यकता है।
    • Consolidate Duplicate Conditional टुकड़े - सशर्त अभिव्यक्ति की साथ-साथ शाश्तों में अक ही प्रयोजन है आपको इस अभिव्यक्ति से कोड का यह टुकड़ा निकालना होगा।
    • Remove Control Flag (நிய்ட்டை வாயு தாட்டான்) - एक वेरिएबल है जो तार्किक अभिव्यक्तियों की श्रृंखला के लिए नियंत्रण ध्वज के रूप में कार्य करता है। हम अब यूटर्न का ब्रेक ले चुके हैं।
    • Replace Conditional with Polymorphism (ऑपरेटर को मल्टी-फ़ंक्शन के साथ बदलने की आवश्यकता है) - टैब में जाब को कैसर्ट अपर्ट होता है जिसका व्यवहार ऑब्जेक्ट प्रकार पर निर्भर करता है। यदि ऑपरेटर की स्थिति हो तो उपवर्ग की प्रत्येक शाखा को अतिभारित विधि में स्थानांतरित करना आवश्यक है। स्रोत कोड को संक्षेप में प्रस्तुत करें।