एक अपरिचित कोडबेस का वर्णन करने के लिए कौन से उपकरण या तकनीक उपयोगी हैं? [बन्द है]


9

जब मैन्युअल रूप से अपरिचित कोड (समीक्षा या संशोधित करने के लिए) का निरीक्षण किया जाता है, तो मुझे लगता है कि तीन विकल्प हैं।

  • कोड का एक टॉप-डाउन रीड , प्रत्येक अगला स्रोत फ़ाइल चुनकर कि फ़ाइल नाम कितना मौलिक लगता है। मैं आमतौर पर लगभग सब कुछ पढ़ता हूं। कुछ फाइलें दो बार।
  • एक चौड़ाई-पहले पढ़ा , जहां मैं न्यूनतम समझ के साथ सभी को खोजने और पढ़ने की विधि को पढ़ता हूं। फिर सभी फ़ंक्शन जिन्हें कॉल किया जाता है, और इसी तरह पढ़ें। अगर मैं इसे कुछ कॉल डीप करता हूं तो मेरा मानसिक स्टैक ओवरफ्लो हो जाता है।
  • एक गहराई-पहले पढ़ा , जहां मैं एक डिबगर में सभी कोड के माध्यम से कदम रखता हूं, अनिश्चित है कि क्या यह 8 मिनट या 8 घंटे लगेगा।

एक बार जब मैंने कोड को पर्याप्त रूप से पढ़ लिया, तो यह समझ में नहीं आया कि यह क्या कर रहा है, मैं अक्सर यह दर्शाता हूं कि मैंने 80% या उससे अधिक कोडबेस पढ़ा है, जबकि मूल कोड 20% या उससे कम है । मैंने बहुत समय बर्बाद किया है।

अपरिचित कोड की त्वरित समझ प्राप्त करने के लिए कौन से उपकरण उपयोगी हैं? क्या ऐसे कोई उपकरण हैं जो महत्वपूर्ण कोड पथ का "बड़ा चित्र" दे सकते हैं और मुझे किसी एक हिस्से के विवरण के लिए नीचे ड्रिल करने की अनुमति दे सकते हैं?


2
80% प्रतिशत को समझे बिना आप यह नहीं समझ सकते हैं कि 20% मूल भाग क्यों है
शाफ़्ट फ्रीक

@ratchetfreak मैं ऐसा पूर्ण शब्दों में नहीं कहूंगा। एक उपकरण कोड को अलग कर सकता है जिसे हमेशा कहा जाता है, उदाहरण के लिए। या केवल कई स्टैक स्तर को गहरा चलाते हैं।
ड्रू डॉर्मन

जवाबों:


8

सबसे अच्छी बात, ज़ाहिर है, किसी ऐसे व्यक्ति के लिए जो आपको इसके माध्यम से चलने के लिए कोड आधार जानता है। यदि वह विकल्प नहीं है, तो कुछ उपकरण हैं जो आपकी मदद कर सकते हैं।

  • VisualStudio स्वचालित रूप से कोड बेस का एक यूएमएल वर्ग आरेख उत्पन्न कर सकता है। बहुत कम से कम यह आपको वर्ग पदानुक्रम दिखाएगा।
  • Doxygen बेहद मददगार हो सकता है। यहां तक ​​कि अगर कोड में डॉक्सीजन-शैली की टिप्पणियां नहीं हैं, तो डॉक्स ऑक्सीजन अभी भी पठनीय प्रलेखन, वर्ग आरेख, और कॉल ग्राफ़ उत्पन्न कर सकता है, जो एक अपरिचित कोड आधार के आसपास अपना रास्ता खोजने के लिए बहुत उपयोगी हो सकता है।

आम तौर पर, आप एक पूर्ण-विशेषताओं वाले आईडीई का उपयोग करना चाहते हैं, जहां आप कुछ भी राइट-क्लिक कर सकते हैं और "परिभाषा पर जाएं"। यह एक जटिल निर्देशिका संरचना में बहुत सारी फ़ाइलों पर grep का उपयोग करने की तुलना में, आपका बहुत समय बचा सकता है।

एक और महत्वपूर्ण बात, इस पर निर्भर करता है कि आपको कोड से कब तक निपटना होगा। यदि यूनिट परीक्षण हैं, तो परीक्षणों के माध्यम से देखें। यदि कोई परीक्षण नहीं हैं, तो उन्हें लिखना शुरू करें। एक विशेष वर्ग या कार्य क्या करता है, इसके बारे में एक परिकल्पना तैयार करें और इसे परीक्षण करने के लिए एक परीक्षण लिखें। यह बहुत अधिक अनुशासन लेता है, लेकिन यह कोड में क्या हो रहा है, इसके बारे में जवाब पाने का एक शानदार तरीका है।


2
थैंक्स @Dima Doxygen उस में से कुछ को संभालने में शानदार है। (मैं उस एक टूल का नाम जो मुझे पता है) को छोड़ कर उत्तर देना नहीं चाहता था। कुडोस स्तर के "मानव संपर्क" घटक पर भी। :)
ड्रू डोरमैन

3

यह अधिक कठोर दृष्टिकोण है। यह तकनीक एक ऐसी परियोजना के लिए उपयोगी हो सकती है जिसमें कई वर्ग हैं जो सार्थक नामस्थानों में व्यवस्थित नहीं हैं।

इस अभ्यास का लक्ष्य वर्ग संबंध की खोज करना है। प्रोजेक्ट का एक थकाऊ क्लोन बनाएं, और फिर कुछ वर्गों को नाम स्थान में रखने का प्रयास करें। बार-बार के प्रयासों पर समय बचाने के लिए, इस परिवर्तन को स्वचालित करने के लिए कुछ रेगेक्स फाइल प्रोसेसिंग टूल्स का उपयोग करें।

यह कंपाइलर त्रुटियों का कारण होगा। इन त्रुटियों को ठीक करने की प्रक्रिया में, एक व्यक्ति को बेहतर समझ होगी कि ये कक्षाएं एक-दूसरे पर कैसे निर्भर करती हैं, और यह तय करती हैं कि किस वर्ग को एक ही नामस्थान में रखा जा सकता है।

यह तकनीक इस लिए उपयोगी है कि परियोजना के कोड संगठन की थोड़ी समझ के साथ भी इसे लागू किया जा सकता है। इसके साथ यह जोखिम भी आता है कि कुछ वर्ग गलतफहमी के कारण इस तकनीक से गुमराह हो सकते हैं।


यह चालाकी है। क्या आप आम तौर पर कई वर्गों के लिए ऐसा करते हैं या क्या आप इसे तब सहेजते हैं जब आप एक विशिष्ट वर्ग में आते हैं जो आपके लिए अस्पष्ट है?
ड्रयू डॉर्मन

@DrewDormann मैंने अपने एक सहकर्मी से इस तकनीक को सीखा जब 100 वर्ग के साथ सामना किया गया जो कि समूहबद्ध नहीं थे। यह परियोजना फ़ाइलों को "छंटनी" करने की दिशा में एक बहुत पहला कदम है, इससे पहले कि कोई भी रिफैक्टिंग होता है। दूसरे शब्दों में, इसका उपयोग तब किया जाता है जब सब कुछ अभी भी गड़बड़ है। (ताज्जुब की बात है कि गड़बड़ मेरे पहले स्व द्वारा लिखी गई थी।) प्रोजेक्ट फाइलों को नेमस्पेस में छाँटकर, यह Doxygen क्लास पेज जनरेशन (नेमस्पेस ट्री प्रदर्शित करके) की सुविधा प्रदान करती है और प्रोग्रामर की समझ को भी गति प्रदान करती है।
rwong
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.