मैं अक्सर डिबगर का उपयोग करता हूं, क्योंकि मैं एक बड़ी प्रणाली पर काम करता हूं और इसलिए मैं चूसता हूं।
http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html
आपका कोड कितना छोटा और बार-बार पढ़ा जाता है, इस बात की संभावना हमेशा रहती है कि उसमें कीड़े हों। http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
गलती करना मानवीय है और कोई भी यह साबित नहीं कर सकता है कि एक कार्यक्रम सही है, इसलिए इस कठिन व्यवसाय में स्वयं की सहायता करने के लिए डिबगर / स्वचालित परीक्षण जैसे उपकरणों का उपयोग क्यों न करें?
यदि कोड पर्याप्त छोटा है, तो सरल परीक्षण करेंगे। इसके अलावा, अगर यह छोटा है और आप बग की प्रकृति जानते हैं, तो कोड पढ़ना पर्याप्त हो सकता है। हालाँकि, एक बार कोड आधार बड़ा होने पर, इसमें कई भाषाएं एक साथ मिलाई जाती हैं, साथ ही 3 स्तरीय, तो आपके पास कई स्तरों पर अच्छा परीक्षण कवरेज होना चाहिए और साथ ही बहुत अच्छा डिबगर - अन्यथा आप बहुत समय बर्बाद कर रहे होंगे।
तो, मुझे कब डिबगर की आवश्यकता नहीं है?
मैं सबसे चतुर कोडर नहीं हूं, न ही सबसे अनुभवी हूं, लेकिन फिर भी, कभी-कभी मुझे डिबगर का उपयोग करने की आवश्यकता नहीं है। तभी:
- कोड मेरा है या अच्छी तरह से लिखा है
- यह एक पठनीय भाषा में लिखा गया है
- समग्र परियोजना छोटी है।
मैं कब डिबगर पर बहुत भरोसा करता हूं?
- संक्षिप्त उत्तर: अक्सर ।
- जब कोई एप्लिकेशन क्रैश होता है। विशेष रूप से जब यह तैनात किया जाता है। उस कंप्यूटर पर VS2010 स्थापित होने से "अज्ञात त्रुटि" और के बीच अंतर हो सकता है
FileNotFoundException
।
- जब एक 3 पार्टी पुस्तकालय दुर्घटना या दुर्व्यवहार करता है।
- जब कोड खराब लिखा जाता है। विशेष रूप से अगर पिछले 10 वर्षों में 10 अलग-अलग लोगों द्वारा एक ही फाइल को छुआ गया था, जिनमें से 7 अब कंपनी के पास नहीं हैं।
- जब परियोजना बड़ी है
- जब कोड बल्कि अखंड है।
- जब कई स्तरों (GUI, SQL, BL) शामिल होते हैं।
ध्यान दें कि "डीबगर" एक से अधिक टूल को संदर्भित कर सकता है। मैं विज़ुअल स्टूडियो डीबगर, SQL डीबगर (ज्यादातर संग्रहीत प्रॉक्स के लिए) और SQL प्रोफाइलर का उपयोग करता हूं (यह पता लगाने के लिए कि एसपी कहा जा रहा है)। क्या मुझे इस कैलिबर के उपकरण की आवश्यकता होगी जो मैं एक त्वरित sysadmin-ish पायथन स्क्रिप्ट लिख रहा था? नहीं, अगर मैंने अपना छोटा GUI- आधारित टूल बनाया है? निर्भर करता है। अगर यह .Net WinForms है - शायद नहीं। अगर यह WPF है - हाँ।
वैसे भी "वास्तविक" प्रोग्रामर को क्या परिभाषित करता है? एक जो जल्दी है? जानकार? एल्गोरिदम में अच्छा है? अच्छा प्रलेखन लिखता है? बस जब इस नए शीर्षक में एक स्नातक होता है? जादुई रेखा कब पार करती है?
मैं कहूंगा कि एक प्रोग्रामर जिसने अपने 100 साल के मौजूदा वर्षों के प्रयास में अपने हाथों को गंदा नहीं किया है, उसे जटिलता और खुद की सीमाओं (साथ ही साथ कोड की गुणवत्ता के साथ निराश) होने का मौका नहीं मिला है।
मैं व्यक्तिगत रूप से मेरे लिए उपलब्ध सर्वश्रेष्ठ डिबगर का उपयोग करने की कोशिश करता हूं, और मैं अक्सर इसका उपयोग करता हूं। यदि कोई कार्य काफी सरल है और डिबगर की आवश्यकता नहीं है - तो मैं इसका उपयोग नहीं करता हूं। मुझे यह जानने में बहुत देर नहीं लगती कि मुझे एक की जरूरत है या नहीं।
...
अब, सिद्धांत रूप में मैं कोड बेस को इतने लंबे समय तक पढ़ सकता था, कि मुझे बस मिल जाएगा। हालांकि, हैंड्स-ऑन दृष्टिकोण सबसे अच्छा काम करता है, साथ ही मैं अक्सर उस बेवकूफ कोड को फिर से लिखना चाहता हूं जिसे मैं देख रहा हूं। दुर्भाग्य से मुझे कोड आधार को साफ करने में 10 + साल लगेंगे जो मैं अंदर हूं। इसलिए डिबगर का उपयोग करना एक स्पष्ट पहला कदम है। केवल जब मुझे पता चलता है कि कोड की 5 मिलियन पंक्तियों में से कौन सी क्रिया कर रहा है, तो क्या मैं यह जानने के लिए कि कक्षा क्या कर रही है, यह जानने के लिए फ़ाइल को ऊपर और नीचे स्कैन करेगी।