हाल ही में मुझे अंकल बॉब के "क्लीन कोड" में मेरे प्रश्न का अच्छा उत्तर मिला, जिसे मैं साझा करना चाहता हूं। वह तीन प्रकार के दोहराव को अलग करता है
समान कोड के टुकड़ों को एक ही विधि से बदला जाना चाहिए। तो यह तरीका विधि को निकालने और सामान्य व्यवहार को सौंपना होगा।
- उसी विधि में, एक्सट्रेक्ट लोकल वेरिएबल को परफॉर्म करें और उसका पुनः उपयोग करें।
- उसी कक्षा में एक्स्ट्रेक्ट मेथड रीफैक्टरिंग का प्रदर्शन करते हैं।
- एक ही पदानुक्रम निकालें विधि की कक्षाओं में और इसे ऊपर खींचो। तरीकों के लिए जगह खोजने के लिए एक पदानुक्रम बनाया जा सकता है।
- अलग-अलग पदानुक्रमों की कक्षाओं में नई वस्तुओं के प्रतिनिधिमंडल का उपयोग किया जाता है।
- यदि विधियों को किसी भी संलग्न स्थिति की आवश्यकता नहीं है, तो "लिब" पैटर्न लागू किया जा सकता है (यह स्थिर विधियों के लिए एक कंटेनर है, जिसे आमतौर पर कहा जाता है
SthUtil
या SthLib
)।
के मामले switch/case
और if/else
वह हमेशा स्थितियों के एक ही सेट के लिए परीक्षण करते हैं ।
- इन्हें बहुरूपता से बदला जाना चाहिए।
मॉड्यूल जो समान एल्गोरिदम को लागू करते हैं । ये खोजने में सबसे कठिन हैं, क्योंकि कोई भी क्लोन डिटेक्टर इन्हें नहीं ढूंढ सकता है।
- जैसा कि दायरा बड़ा है डिजाइन पेटेंट का उपयोग किया जाता है। टेम्पलेट विधि डिजाइन पैटर्न एक वर्ग पदानुक्रम के अंदर एल्गोरिदम के लिए लागू किया जा सकता है।
- रणनीति डिजाइन पैटर्न किसी भी एल्गोरिथ्म के लिए लागू किया जा सकता है जो विभिन्न स्थानों में उपयोग किया जाता है।
पुस्तकालयों के विभिन्न संस्करणों के साथ काम करते समय ओड द्वारा उल्लिखित एक मान्य बिंदु भी
- एक एकल संस्करण पर समेकित करें। मुखौटा डिजाइन पैटर्न यहाँ मदद कर सकता है।
अंत में मेरे सवाल का जवाब देने के लिए सबसे अच्छा एक वाक्य है:
OO भाषाओं में प्रयुक्त कोड पुन: उपयोग विधि ऑब्जेक्ट है।