अगम्य कोड निकालना
एक रियायती रूप से टाइप की गई भाषा में, आपको हमेशा पता होना चाहिए कि क्या कोड वास्तव में उपलब्ध है या नहीं: इसे हटा दें, संकलित करें, अगर कोई त्रुटि नहीं है तो यह उपलब्ध नहीं था।
दुर्भाग्यवश, सभी भाषाएँ वैधानिक रूप से टाइप नहीं की जाती हैं, और सभी वैधानिक रूप से टाइप की जाने वाली भाषाएँ राजसी नहीं होती हैं। जो चीजें गलत हो सकती हैं उनमें (1) परावर्तन और (2) अप्रत्याशित ओवरलोडिंग शामिल हैं।
यदि आप एक गतिशील भाषा, या पर्याप्त शक्तिशाली प्रतिबिंब वाली भाषा का उपयोग करते हैं, जो कि जांच के तहत कोड का टुकड़ा संभवतः प्रतिबिंब के माध्यम से रन-टाइम पर पहुँचा जा सकता है, तो आप संकलक पर भरोसा नहीं कर सकते। ऐसी भाषाओं में पायथन, रूबी या जावा शामिल हैं।
यदि आप अनिर्दिष्ट ओवरलोडिंग वाली भाषा का उपयोग करते हैं, तो केवल एक अधिभार को हटाने से अधिभार संकल्प को चुपचाप दूसरे अधिभार पर स्विच किया जा सकता है। ऐसी कुछ भाषाएं आपको कोड के उपयोग से जुड़ी संकलन-समय की चेतावनी / त्रुटि को प्रोग्राम करने देती हैं, अन्यथा आप कंपाइलर पर भरोसा नहीं कर सकते। ऐसी भाषाओं में जावा (उपयोग @Deprecated
) या C ++ (उपयोग [[deprecated]]
या = delete
) शामिल हैं।
इसलिए, जब तक आप सख्त भाषाओं के साथ काम करने के लिए बहुत भाग्यशाली नहीं हैं (रुस्त मन में आता है), आप वास्तव में संकलक पर भरोसा करके अपने आप को पैर में गोली मार सकते हैं। और दुर्भाग्य से परीक्षण सूट आमतौर पर अधूरे होते हैं इसलिए या तो अधिक मदद नहीं मिलती है।
अगले भाग को क्यू ...
संभावित अप्रयुक्त कोड हटाना
अधिक संभावना है, कोड को वास्तव में संदर्भित किया जाता है, हालांकि आपको संदेह है कि कोड की शाखाओं का अभ्यास करने से यह संदर्भ नहीं लिया जाता है।
इस मामले में, कोई फर्क नहीं पड़ता कि भाषा, कोड प्रदर्शन रूप से उपलब्ध है, और केवल रन-टाइम इंस्ट्रूमेंटेशन का उपयोग किया जा सकता है।
अतीत में, मैंने ऐसे कोड को हटाने के लिए 3-चरणों के दृष्टिकोण का सफलतापूर्वक उपयोग किया है:
- प्रत्येक शाखा पर संदेह नहीं किया जा सकता है, एक चेतावनी लॉग ऑन करें।
- एक चक्र के बाद, एक अपवाद को फेंक दें / कोड के विशिष्ट टुकड़े में प्रवेश करने पर एक त्रुटि लौटाएं।
- एक और चक्र के बाद, कोड हटाएं।
चक्र क्या है? यह कोड के उपयोग का चक्र है। उदाहरण के लिए, एक वित्तीय अनुप्रयोग के लिए मैं एक छोटे मासिक चक्र की उम्मीद करूंगा (महीने के अंत में वेतन का भुगतान किया जा रहा है) और एक लंबा मासिक चक्र। इस मामले में, आपको यह सत्यापित करने के लिए कम से कम एक साल इंतजार करना होगा कि कोई भी चेतावनी कभी भी समाप्त होने वाली ईवेंट के लिए उत्सर्जित नहीं होती है जो कोड पथ का उपयोग कर सकती है जो अन्यथा कभी उपयोग नहीं की जाती हैं।
उम्मीद है, अधिकांश अनुप्रयोगों में छोटे चक्र होते हैं।
मैं एक TODO टिप्पणी डालने की सलाह देता हूं, एक तारीख के साथ, अगले कदम पर आगे बढ़ने की सलाह देता हूं। और आपके कैलेंडर में एक अनुस्मारक।