paint-brush
कोड और मोटरसाइकिल रखरखाव की कला: आम तौर पर नौसिखियों की गलतियाँद्वारा@shcherbanich
167 रीडिंग

कोड और मोटरसाइकिल रखरखाव की कला: आम तौर पर नौसिखियों की गलतियाँ

द्वारा Filipp Shcherbanich7m2024/08/16
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

कोडिंग वास्तव में एक मोटरबाइक है, जो बहुत शक्तिशाली और तेज़ है। कोडिंग के साथ, सवारी की तरह ही, आपको काठी में बने रहने के लिए ज़िम्मेदार और सचेत रहने की ज़रूरत है और विजेता बनने के लिए इसे दोगुना करना होगा। इस लेख में, मैं अपने विचार साझा करना चाहता हूँ कि सॉफ़्टवेयर बनाते समय नए और अनुभवी डेवलपर्स को क्या याद रखना चाहिए।
featured image - कोड और मोटरसाइकिल रखरखाव की कला: आम तौर पर नौसिखियों की गलतियाँ
Filipp Shcherbanich HackerNoon profile picture
0-item


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

पठनीयता प्रदर्शन से अधिक महत्वपूर्ण है, लेकिन हमेशा नहीं

आम तौर पर नौसिखिए मोटरसाइकल चालक किससे शुरुआत करते हैं? नंबर और गैजेट। पावर, टॉर्क, परफॉरमेंस पार्ट्स जो एक चौथाई मील पर सैद्धांतिक मिलीसेकंड में काम आ सकते हैं... जैसे कि वे MotoGP स्टार्टिंग ग्रिड पर पहुंचने वाले हों। इस बीच, उनका प्राथमिक कार्य बस सुरक्षित तरीके से सवारी करना सीखना है। इसी तरह, शुरुआती डेवलपर्स अक्सर कोड परफॉरमेंस पर ध्यान केंद्रित करते हैं, जहाँ यह अनावश्यक है। `dict()` या `{}` पायथन में अधिक कुशल है या नहीं, या परफॉरमेंस को कम करने की क्षमता के बावजूद फ्रेमवर्क का उपयोग करने के पक्ष और विपक्ष पर बहस करने वाले लेख इस जुनून को बढ़ावा देते हैं। जबकि आपकी प्रोग्रामिंग भाषा की पेचीदगियों को समझना फायदेमंद और कभी-कभी महत्वपूर्ण होता है - जैसे कि हवाई जहाज, स्टॉक ट्रेडिंग रोबोट या मेडिकल डिवाइस के लिए सॉफ़्टवेयर - यह हमारे द्वारा प्रतिदिन बनाए जाने वाले अधिकांश प्रोग्राम के लिए हमेशा महत्वपूर्ण नहीं होता है। भले ही आप परफॉरमेंस-क्रिटिकल सॉफ़्टवेयर पर काम कर रहे हों, यह जानना आवश्यक है कि कोड के किन हिस्सों को उच्च परफॉरमेंस की आवश्यकता है और किनको नहीं।


हालांकि, हमेशा जो बात मायने रखती है, वह है कोड की पठनीयता। कई अध्ययनों और सर्वेक्षणों से यह पुष्टि होती है कि डेवलपर्स कोड लिखने से ज़्यादा उसे पढ़ने और समझने में समय लगाते हैं। उदाहरण के लिए, अध्ययन "मुझे पता है कि आपने पिछली गर्मियों में क्या किया था - डेवलपर्स अपना समय कैसे व्यतीत करते हैं, इसकी एक जांच" पाया गया कि IDE में बिताया गया केवल 4% समय कोड संपादन के लिए उपयोग किया जाता है। वैश्विक कोड समय रिपोर्ट 250,000 से ज़्यादा डेवलपर्स के सर्वेक्षण के आधार पर, पता चला कि उत्तरदाता दिन में सिर्फ़ 52 मिनट ही सक्रिय रूप से कोड लिखने में बिताते हैं। बाकी समय प्रोजेक्ट पर चर्चा और योजना बनाने में व्यतीत होता है, जिसमें से लगभग 41 मिनट IDE और प्रोजेक्ट डॉक्यूमेंटेशन में कोड पढ़ने में व्यतीत होते हैं।


ज़्यादातर मामलों में, हमारा लक्ष्य एक ऐसा रखरखाव योग्य उत्पाद बनाना है जिसे जटिल समर्थन की ज़रूरत न हो और जो प्रतिस्पर्धी माहौल में कामयाब हो। इसका मतलब यह नहीं है कि हम प्रदर्शन को पूरी तरह से नज़रअंदाज़ कर सकते हैं; हमें एक ऐसा संतुलन खोजना होगा जहाँ रखरखाव और प्रदर्शन एक साथ मौजूद हों। अगर उच्च-प्रदर्शन कोड की ज़रूरत है, तो हम प्रोजेक्ट के लॉन्च के बाद धीमे सेक्शन को ऑप्टिमाइज़ कर सकते हैं।


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


यह पहचानना कि पठनीयता की तुलना में प्रदर्शन को कब प्राथमिकता देनी है, इसमें आपके अनुप्रयोग में बाधाओं को इंगित करना शामिल है:


  • अनुप्रयोग की प्रोफाइलिंग : यदि प्रोफाइलिंग से पता चलता है कि विशिष्ट महत्वपूर्ण कोड खंड प्रदर्शन को महत्वपूर्ण रूप से प्रभावित करते हैं, तो इन खंडों को अनुकूलित करने से पठनीयता में कमी को उचित ठहराया जा सकता है।

  • लोड परीक्षण : उच्च लोड का अनुकरण करने से वास्तविक दुनिया में समस्या बनने से पहले प्रदर्शन संबंधी बाधाओं की पहचान करने में मदद मिल सकती है।

  • उपयोगकर्ता फीडबैक विश्लेषण : उपयोगकर्ताओं से फीडबैक एकत्रित करने से खराब प्रदर्शन वाले क्षेत्रों को उजागर किया जा सकता है।

  • लॉगिंग और मॉनिटरिंग : निष्पादन लॉग और मेट्रिक्स का विश्लेषण करके एप्लिकेशन के वास्तविक दुनिया संचालन के दौरान समस्याग्रस्त क्षेत्रों की पहचान की जा सकती है। यह चरण अप्रत्याशित मुद्दों को उजागर कर सकता है, जैसे अनुचित API उपयोग के कारण प्रदर्शन संबंधी समस्याएं।

  • स्टेटिक कोड विश्लेषण उपकरण : कुछ उपकरण कोड समीक्षा के दौरान प्रदर्शन सुधार का सुझाव दे सकते हैं। कार्य समीक्षा के दौरान इन उपकरणों को स्वचालित रूप से चलाना एक अच्छा अभ्यास है।


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

दस्तावेजीकरण से किए गए कार्य को समझने में मदद मिलती है

सड़क पर चलते समय, सबसे महत्वपूर्ण सुरक्षा कौशलों में से एक है पूर्वानुमान लगाना और इसी तरह, दूसरों के इरादों को पढ़ना। कोडिंग में, सवारी की तरह ही, आप सीधे दूसरे लोगों के दिमाग को नहीं पढ़ सकते। दो पहियों पर, आपको सूक्ष्म हरकतों पर ध्यान देना होगा और यह अनुमान लगाना होगा कि दूसरे अगले सेकंड में क्या करेंगे। प्रोग्रामर के पास टेलीपैथी को बदलने के लिए एक शक्तिशाली उपकरण होता है (लेकिन हमेशा इसका इस्तेमाल नहीं करते): कागजी कार्रवाई। अधिकांश डेवलपर्स इस बात से सहमत हैं कि दस्तावेज़ीकरण किसी प्रोजेक्ट के लिए महत्वपूर्ण है, जैसा कि सर्वेक्षणों से पता चलता है स्टैक ओवरफ़्लो डेवलपर सर्वेक्षण 2023 , जहां 90.36% उत्तरदाता नियमित रूप से तकनीकी दस्तावेज़ीकरण का उपयोग करते हैं। हालांकि, वे अक्सर वहां सभी उत्तर नहीं पा सकते हैं, इसके बजाय स्टैक ओवरफ्लो (82.56%) और विभिन्न ब्लॉग (76.69%) की ओर रुख करते हैं। एक अन्य अध्ययन, माइक्रोसॉफ्ट रिसर्च: सॉफ्टवेयर डेवलपर्स का दैनिक जीवन सर्वेक्षण से पता चलता है कि डेवलपर्स अपने दिन का 1-2% समय दस्तावेजीकरण पर खर्च करते हैं, तथा 10.3% उत्तरदाता खराब या पुराने कागजी कार्रवाई के कारण बहुत समय गंवाते हैं।


दस्तावेज़ीकरण कई रूप ले सकता है, जैसे कि Confluence जैसी प्रणालियों में विस्तृत परियोजना विवरण से लेकर कोड टिप्पणियाँ और स्वचालित रूप से या अर्ध-स्वचालित रूप से उत्पन्न परियोजना विवरण वेबसाइटें। यह परियोजना की रूट निर्देशिका में README फ़ाइल जितना सरल भी हो सकता है। प्रारूप चाहे जो भी हो, दस्तावेज़ीकरण बनाने की प्रक्रिया सिर्फ़ उत्पाद के काम करने के तरीके के बारे में जानकारी देने से कहीं आगे जाती है। यह प्रक्रिया हमें अपने किए गए कामों पर पुनर्विचार करने के लिए मजबूर करती है , जिससे अक्सर API और समग्र वास्तुकला में सुधार हो सकता है। मैंने अक्सर महसूस किया है कि मैंने जो कार्यक्षमता बनाई है, उसका दस्तावेज़ीकरण करते समय, इसके साथ काम करना मुश्किल हो सकता है, और मैंने इसे ठीक करने के तरीके खोजे हैं।


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

दूसरों को यह बताना कि आप क्या कर रहे हैं, कोई शर्म की बात नहीं है

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


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


टिप्पणियाँ जटिल व्यावसायिक तर्क या परियोजना-विशिष्ट आवश्यकताओं में जीवनरक्षक होती हैं, जो नए टीम सदस्यों या दीर्घकालिक परियोजना समर्थन के मामले में स्पष्ट नहीं हो सकती हैं। वे टीम के भीतर ज्ञान को बनाए रखने में मदद करते हैं और डेवलपर्स के बीच परियोजनाओं को स्थानांतरित करना आसान बनाते हैं।


बेशक, अत्यधिक टिप्पणी से बचना ज़रूरी है, जहाँ टिप्पणियाँ स्पष्ट रूप से बताती हैं या पुरानी और भ्रामक हो जाती हैं। उनका उद्देश्य स्पष्टता सुनिश्चित करना और कोड की समझ का समर्थन करना है, न कि इसे अनावश्यक जानकारी से भरना।

परीक्षण: कोड समझने और सत्यापन के लिए एक उपकरण

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


  • त्रुटि और दोष का पता लगाना : परीक्षण से उत्पाद के उपयोगकर्ता तक पहुंचने से पहले त्रुटियों और अप्रत्याशित व्यवहार की पहचान हो जाती है, जिससे गुणवत्ता में वृद्धि होती है और उपयोगकर्ता संबंधी समस्याएं कम हो जाती हैं।
  • कोड समझ : परीक्षण परिदृश्य बनाने के लिए कोड की संरचना और कार्यक्षमता की गहरी समझ की आवश्यकता होती है, जो प्रोग्राम के तर्क और अंतःक्रिया की बेहतर समझ को बढ़ावा देती है।
  • दस्तावेज़ीकरण अनुपूरक : परीक्षण कार्यों और विधियों के लिए उपयोग उदाहरण के रूप में काम कर सकते हैं, परियोजना की कार्यक्षमता के बारे में जानकारी का पता लगाने में मदद कर सकते हैं और वास्तविक उपयोग के मामले प्रदान करके नए विशेषज्ञों की सहायता कर सकते हैं।


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


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

अपने कोड से वैसे ही प्यार करें जैसे आप अपने दोस्त से करते हैं और उसका ख्याल रखें

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


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


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


संक्षेप में, अपने कोड से प्यार करें और उस पर समय लगाएं - लेकिन जरूरत से ज्यादा नहीं, अन्यथा आप "द जीरो थ्योरम" के नायक की तरह हो जाएंगे। शुभकामनाएं!