कोड में अपनी जगह बनाए रखने के लिए अच्छी तकनीकें क्या हैं?


21

आपके कोड में एक भी बिंदु याद रखने के लिए मैं बुकमार्क का उपयोग करना समझता हूं । हालाँकि, जिस कोड की वे जांच कर रहे हैं , उसके प्रवाह पर कैसे नज़र रखता है ? उदाहरण: एकाधिक बुकमार्क और वे जिस क्रम में बनाए गए थे।

उदाहरण:

  1. बग रिपोर्ट: "टकराव दीवारों के कोनों पर काम नहीं कर रहे हैं"

    1. बग का पुनरुत्पादन कुछ पॉलीगॉन से टकरा नहीं रहा है।
    2. टक्कर कोड एक अनुपलब्ध देव द्वारा लिखा गया था। तो जांच कुछ इस तरह है:

एक प्रवाह की स्कीमा

जांच के दौरान, विशेषकर जब Google जैसे गैर-कोड आइटम की समीक्षा करते हैं, तो किसी को कोड में अपनी जगह ढीली करने की अपेक्षा की जा सकती है ( क्या मैंने पहले से ही इस कोड पथ पर ध्यान दिया है? या मैं किस कोड पथ की जांच कर रहा था? इसमें कई ऐसे हैं इस समारोह के लिए , आदि)। वही अपरिहार्य रुकावटों के लिए जाता है (बॉस: मुझे [लम्बी व्यर्थ रिपोर्ट] अब , आदि) की आवश्यकता है

कोड में किसी के स्थान पर नज़र रखने के लिए एक तरीका प्रदान करने के लिए तकनीकों या उपकरणों का संसाधन होना उपयोगी होगा।


संपादित करें : उपरोक्त उदाहरण एक संभावित चित्रण के रूप में है, न कि वास्तविक समस्या के रूप में जिसका जवाब देने की आवश्यकता है।

इस सवाल का एक और तरीका है:

एक नई प्रणाली सीखते समय, आप कोड को सीखने में किस स्थान पर हैं? यह समझने के बारे में नहीं है कि कोड ऐसा क्यों करता है, जो करता है (जो कि टिप्पणियों के लिए होना चाहिए), लेकिन यह कैसे करता है (जो केवल कोड को पढ़ने के माध्यम से सीखा जाता है, टिप्पणी नहीं)।

जवाबों:


14

बुलबुले इंटरफ़ेस एक ही बार में कोड के बिट्स का एक गुच्छा दिखाकर इस समस्या को हल करने का प्रयास करता है। (आप अपने ब्राउज़र के साथ Googling के लिए फंस गए हैं)। यह आश्चर्यजनक लग रहा है, लेकिन मैंने इसकी कोशिश नहीं की है। विचार का यह संस्करण विज़ुअल स्टूडियो अल्टीमेट के लिए विज़ुअल स्टूडियो कार्यान्वयन है।


+1 क्योंकि यह समस्या का व्यावहारिक और तैयार समाधान है। (यह भी बस थोड़ा सा भयानक है!)
जेस टेलफ़ोर्ड

मेरे सिर में साल पहले आविष्कार की गई चीजों में से एक, यह पता लगाने के लिए कि यह पहले से मौजूद है :( +1
phresnel

ऐसा ही लगता है कि आप स्क्वीक और अन्य स्मॉलटैक्स में क्या कर सकते हैं, जहां आप नई कोड ब्राउज़िंग विंडो खोलते हैं और आप उन सभी तरीकों / कक्षाओं में नेविगेट कर सकते हैं, जिनमें आप चाहते हैं।
रुडोल्फ ओलह

बहुत बढ़िया ... मैंने एक छोटा सा खिलौना ऐप बनाया था जो आपके इंटरनेट ब्राउजिंग के दृश्य को एक समान तरीके से प्रस्तुत करता है (जैसा कि आप लिंक पर क्लिक करते हैं, एक नया नोड जोड़ा जाएगा और मूल में वापस लिंक किया जाएगा)। उस कोड विज़ुअलाइज़ेशन के लिए आवेदन करने के बारे में कभी नहीं सोचा था।
माइकल ब्राउन

12

उल्लेखित सभी महान तकनीकों के अलावा, मैंने पाया है कि पुराने ज़माने के ए 3 कागज़ इन मुद्दों में एक उत्कृष्ट मदद है। अपने विचारों को लिखें और उन्हें माइंडमैप-शैली व्यवस्थित करें।


हाँ हाँ। अब तक का सबसे अच्छा जवाब।
पैट्रिक ह्यूजेस

10

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


1
बहुत व्यावहारिक। मैंने इस तरह से स्रोत नियंत्रण का उपयोग करने के बारे में नहीं सोचा था।
जेस टेल्फोर्ड

कौन सा संपादक और डिबगर?
जॉन गेन्स जूनियर

विम और ग्रीन हिल की बहु डिबगर।
कार्ल

Visual Studio में यह CTRL + है - आगे जाने के लिए और CTRL + = आगे जाने के लिए।
विटालिबी

ग्रहण वर्तमान प्रतीक की परिभाषा को एक अलग पैनल में कर्सर के नीचे दिखा सकता है।

3

ट्रैक रखने के कई तरीके:

  • इसे लिख लें । दो मिनट में एक बैठक हुई? लिखिए कि आप क्या कर रहे थे और कहाँ कर रहे थे। मेरे पास हमेशा कोड के रूप में चीजों को लिखने के लिए मेरे बगल में पेन और पेपर होता है।
  • बुकमार्क । मेरे पास 10 नंबर के बुकमार्क हैं जिन्हें मैं सेट कर सकता हूं।
  • ढेर लगाना । आप आसानी से कोड के पूरे पदानुक्रम को देख सकते हैं जो आप से गुजरे हैं। मेरा संपादक मुझे स्टैक ट्रेस की प्रतिलिपि बनाने और उसे सहेजने की भी अनुमति देता है। अगली बार जब मैं अपना संपादक खोलूंगा तो मैं तेज नेविगेशन के लिए स्टैकट्रेस लोड कर सकता हूं।
  • संपादक नेविगेशन । आधार सदस्य के पास जाओ, उत्तराधिकारी के पास जाओ, हमें खोजो, संदर्भ के लिए जाओ ...

1

मैं सरल समाधान का उपयोग करता हूं - जब तक मैं कार्य के साथ समाप्त नहीं होता हूं तब तक कुछ भी बंद न करें। इसका मतलब है कि आमतौर पर 50 या तो खुली खिड़कियों / टैबों में से कुछ ऐसा है जो मुझे याद दिलाएगा कि जब मैं इसे वापस ले रहा हूं तो मैं क्या सोच रहा था।


इस दृष्टिकोण के साथ मुद्दा यह है कि आप विचार / अनुसंधान की कई समवर्ती शाखाओं को कैसे ट्रैक करते हैं?
जेस टेल्फोर्ड

1
मुझे लगता है कि एक समस्या नहीं है - वे सभी एक ही तरह से खुले हैं, और इससे कोई फर्क नहीं पड़ता कि मैं किस शाखा में वापस जाऊं। यह आईडीई की तुलना में वेब ब्राउज़र के लिए बेहतर काम करता है, लेकिन ऐसा सिर्फ इसलिए हो सकता है क्योंकि मेरा वर्तमान कोडबेस वास्तव में वैचारिक रूप से व्यवस्थित नहीं है।
टॉम क्लार्कसन

1

एक असली डेवलपर्स टूल / आईडीई प्राप्त करें, जो आपको कभी भी फैंसी लगे। Vi, Emacs, Eclipse या जो कुछ भी हो (यह पसंद उतनी ही बड़ी है जितनी बहसें करना सबसे अच्छा है, लेकिन यह एक और समस्या है), और इसका सही इस्तेमाल करना सीखें । न, बहुत अधिक की तरह, सिंटैक्स हाईलाइंग के साथ नोटपैड की तरह इसका उपयोग करें। हॉटकीज़ का उपयोग करना सीखें, और सामान्य क्रियाओं के लिए माउस पर निर्भर न रहें (यह बहुत धीमा है)। एक बड़ी स्क्रीन (1920x1200 न्यूनतम) सौम्य है।

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

मैं आधा दर्जन भाषाओं का उपयोग करते हुए एक दर्जन या अधिक 1 मिलियन से अधिक एसएलओसी मॉड्यूल वाले कोड बेस पर काम करता हूं। जाहिर है मैं एक समय में उन सभी पर काम नहीं करता, बल्कि एक या दो के छोटे हिस्सों पर ध्यान केंद्रित करता हूं, लेकिन मैं कुछ क्रियाओं के साथ कोड में किसी भी बिंदु पर नेविगेट कर सकता हूं जो कि मैं जो कर रहा हूं उससे संबंधित है।


मैं मानता हूं कि एक उचित आईडीई सबसे अच्छा है। मैं विम के महान निशान और टैग जंपिंग सुविधाओं का उपयोग करता हूं। हालांकि, उनकी दोनों सीमाएँ हैं: निशान बफर-स्थानीय हैं, और टैग इतिहास रैखिक हैं। जटिल स्थितियों के लिए, यह अभी भी पर्याप्त नहीं है (इसलिए यह सवाल पूछना)।
जेस टेल्फोर्ड

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

माना। मैं विम के साथ एक उन्नत शुरुआत कर रहा हूं (अधिकांश समय बिना सोचे-समझे उपयोग कर सकता है, लेकिन सतह को मुश्किल से खरोंच दिया है), इसलिए मुझे यकीन है कि ऐसी चीजें हैं जो मुझे नहीं पता हैं। फिर भी, मुझे नहीं लगता कि vi (m) में psr का उत्तर (कम से कम, मेरे शोध से नहीं) जैसे कुछ भी करना संभव है ।
जेस टेलफ़ोर्ड

@Jess: निशान जरूरी नहीं कि लोकल बफर हो। बड़े अक्षरों का उपयोग करने वाले चिह्न वैश्विक हैं।
डेव किर्बी

@DaveKirby बहुत बढ़िया - मुझे विम के बारे में नई बातें सीखना बहुत पसंद है: D
जेस टेलफ़ोर्ड

1

दृश्य स्टूडियो के साथ, डिबग सत्र में, आप कोड के प्रवाह को ट्रैक करने के लिए 'कॉल स्टैक' विंडो का उपयोग कर सकते हैं (आप इसे Debug / Windows / Call Stackया शॉर्टकट के साथ सक्षम कर सकते हैं Ctrl+Alt+c)।


1
जैसा कि ज्यादातर डिबगर्स में होता है। जब आप मैन्युअल रूप से अपने कोड बेस के बाहर शोध सहित अपने कोड को ब्राउज़ कर रहे हों, तो यह प्रश्न अधिक है।
जेस टेल्फोर्ड

1

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


0

मैं emacs के लिए org मोड का उपयोग करता हूं , जो कि uber-outlining टूल है। इसके साथ, मैं एक रूपरेखा लिख ​​सकता हूं जो कोड के कॉल स्टैक की नकल करता है और स्रोत कोड से सीधे लिंक शामिल करता है (ऑर्ग-स्टोर-लिंक के माध्यम से)। आप व्याख्यात्मक पाठ, वेब पेजों के लिंक आदि शामिल कर सकते हैं (उदाहरण के लिए जब आप जादुई संख्या के लिए गूगल करते हैं)

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.