paint-brush
अपने कोड के बदबूदार हिस्सों को कैसे खोजें [भाग XX]: हम 100 तक पहुंच गए हैं!द्वारा@mcsee
1,425 रीडिंग
1,425 रीडिंग

अपने कोड के बदबूदार हिस्सों को कैसे खोजें [भाग XX]: हम 100 तक पहुंच गए हैं!

द्वारा Maximiliano Contieri1m2022/06/11
Read on Terminal Reader
Read this story w/o Javascript

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

उदाहरण के साथ कोड की गंध को समझें!

Company Mentioned

Mention Thumbnail
featured image - अपने कोड के बदबूदार हिस्सों को कैसे खोजें [भाग XX]: हम 100 तक पहुंच गए हैं!
Maximiliano Contieri HackerNoon profile picture

5 कोड गंध वाली 20 कहानियां प्रत्येक 100 कोड गंध हैं, है ना?


पिछला कोड बदबू आ रही है

चलो जारी रखते है...


कोड गंध 96 - मेरी वस्तुएं

आप वस्तुओं के स्वामी नहीं हैं।

टीएल; डीआर: मेरा नाम उपसर्ग के रूप में उपयोग न करें।

समस्या

  • संदर्भ की कमी
  • आक्षेप दोष

समाधान

  1. मेरा उपसर्ग हटा दें।
  2. नाम सुझाने वाली भूमिका में बदलें।

संदर्भ

कई पुराने ट्यूटोरियल 'माई' शब्द को आलसी नाम के रूप में इस्तेमाल करते हैं। यह अस्पष्ट है और संदर्भ गलतियों को जन्म देता है।

नमूना कोड

गलत

 MainWindow myWindow = Application.Current.MainWindow as MainWindow;

सही

 MainWindow salesWindow = Application.Current.MainWindow as MainWindow; /* Since window is instanciated, we are currently working with a specialized window playing a special role */

खोज

  • [x] स्वचालित

हम अपने लिंटर्स और स्टैटिक चेकर्स को इस उपसर्ग को खोजने के लिए कह सकते हैं और हमें चेतावनी दे सकते हैं।

टैग

  • नामकरण

निष्कर्ष

मेरा उपयोग करने से बचें। उपयोग संदर्भ के अनुसार वस्तुएं बदलती हैं।

और जानकारी

क्रेडिट

Unsplash . पर Michał Bożek द्वारा फोटो


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

केंट बेकी

सॉफ्टवेयर इंजीनियरिंग महान उद्धरण


कोड गंध 97 - सहानुभूति के बिना त्रुटि संदेश

हमें उपयोगकर्ताओं (और स्वयं) के लिए त्रुटि विवरण के साथ विशेष ध्यान रखना चाहिए।

टीएल; डीआर: सार्थक विवरण का प्रयोग करें और सुधारात्मक कार्यों का सुझाव दें।

समस्या

  • कम से कम आश्चर्य सिद्धांत

समाधान

  1. घोषणात्मक त्रुटि संदेशों का उपयोग करें
  2. स्पष्ट निकास क्रियाएं दिखाएं

संदर्भ

प्रोग्रामर शायद ही कभी यूएक्स विशेषज्ञ होते हैं।

हम इस तथ्य को भी कम आंकते हैं कि हम काउंटर के दोनों किनारों पर हो सकते हैं।

नमूना कोड

गलत

 alert("Cancel the appointment?", "Yes", "No"); // No consequences // Options not clear

सही

 alert("Cancel the appointment? \n" + "You will lose all the history", "Cancel Appointment", "Keep Editing"); // Consequences are clear // Choice options have context

खोज

  • [एक्स] मैनुअल

हमें कोड समीक्षाओं में सभी अपवाद संदेशों को पढ़ने की आवश्यकता है।

टैग

  • अपवाद
  • यूएक्स

निष्कर्ष

अपवाद उठाते या संदेश दिखाते समय हमें अपने अंतिम उपयोगकर्ताओं पर विचार करने की आवश्यकता होती है।

क्रेडिट

Unsplash . पर विजुअल द्वारा फोटो


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

रॉबर्ट डी. श्नाइडर



कोड गंध 98 - वर्तनी की गलतियाँ

वर्तनी और पठनीयता मनुष्यों के लिए बहुत महत्वपूर्ण है और मशीनों के लिए महत्वपूर्ण नहीं है।

TL; DR: अपने नामों का ध्यान रखें।

समस्या

  • पठनीयता
  • कोड में शब्दों को खोजना कठिन है।

समाधान

  1. अपने कोड की वर्तनी जांचें।
  2. वर्तनी जाँच के साथ IDE का उपयोग करें

संदर्भ

हम में से बहुत से लोग अपनी पहली भाषा के रूप में अंग्रेजी नहीं बोलते हैं।

हमें अपने ग्रंथों और नामों की अतिरिक्त देखभाल करने की आवश्यकता है।

इस लेख के शीर्षक में संदर्भ के प्रमाण के रूप में एक टाइपो है और एक क्लिकबेट भी है

नमूना कोड

गलत

 comboFeededBySupplyer = supplyer.providers();

सही

 comboFedBySupplier = supplier.providers();

खोज

टैग

  • पठनीयता
  • नामकरण
  • कोड स्टाइलिंग

निष्कर्ष

अपने नामों पर पूरा ध्यान दें।

आप शायद कुछ महीनों में कोड पढ़ने वाले व्यक्ति होंगे।

संबंधों

कोड गंध 48 - मानकों के बिना कोड

और जानकारी

वास्तव में एक नाम क्या है - भाग I द क्वेस्ट

वास्तव में एक नाम क्या है — भाग II पुनर्वसन

क्रेडिट

Unsplash . पर ब्रेट जॉर्डन द्वारा फोटो


हर अच्छे से लिखे गए बड़े प्रोग्राम के अंदर एक अच्छा लिखा हुआ छोटा प्रोग्राम होता है।

कार होरे


कोड गंध 99 - पहला सेकंड

हम कितनी बार आलसी तर्क नाम देखते हैं?

TL; DR: भूमिका के अनुसार अपने तर्कों को नाम दें, न कि आकस्मिक स्थिति के अनुसार

समस्या

  • पठनीयता
  • नाम उजागर करने का इरादा

समाधान

  1. सार्थक नामों का प्रयोग करें

संदर्भ

विधियाँ लिखते समय, हम आमतौर पर अच्छे नाम खोजने के लिए रुकते नहीं हैं।

हम स्पष्ट को कभी भी रिफलेक्टर नहीं करते हैं, न ही।

नमूना कोड

गलत

 class Calculator: def subtract(self, first, second): return first - second class CalculatorTest def test_multiply(): assert equals(first, second)

सही

 class Calculator: def subtract(self, minuend, subtrahend): return minuend - subtrahend class CalculatorTest def test_multiply(): assert equals(expectedValue, realValue)

खोज

  • [एक्स] मैनुअल

हम तर्क नामों के रूप में 'पहले' और 'दूसरा' जैसे निषिद्ध शब्दों के लिए चेतावनी दे सकते हैं।

टैग

  • पठनीयता

निष्कर्ष

हमेशा पैरामीटर सुझाने वाले नियम का पालन करें।

भूमिका के अनुसार अपने सहयोगियों को नाम दें।

संबंधों

कोड गंध 65 - प्रकार के नाम पर चर:

और जानकारी

वास्तव में एक नाम क्या है — भाग II पुनर्वसन

क्रेडिट

Unsplash . पर प्रिसिला डू प्रीज़ द्वारा फोटो


अंतिम स्रोत कोड वास्तविक सॉफ़्टवेयर डिज़ाइन है।

जैक रीव्स


कोड गंध 100 - GoTo

GOTO को 50 साल पहले हानिकारक माना जाता था

टीएल; डीआर: कभी भी गोटो का प्रयोग न करें।

समस्या

  • पठनीयता
  • कोड का पालन करना मुश्किल

समाधान

  1. GOTO को स्ट्रक्चर्ड कोड से बदलें
  2. अपवादों का प्रयोग करें

संदर्भ

मैंने बेसिक में प्रोग्रामिंग शुरू की।

वहां GOTO का जमकर शोषण किया गया।

मुझे पुनर्वसन मोड में खरोंच से संरचित प्रोग्रामिंग सीखनी थी।

नमूना कोड

गलत

 for x < 0 { if x > -1e-09 { goto small } z = z / x x = x + 1 } for x < 2 { if x < 1e-09 { goto small } z = z / x x = x + 1 } if x == 2 { return z } x = x - 2 p = (((((x*_gamP[0]+_gamP[1])*x+_gamP[2])*x+_gamP[3])*x+_gamP[4])*x+_gamP[5])*x + _gamP[6] q = ((((((x*_gamQ[0]+_gamQ[1])*x+_gamQ[2])*x+_gamQ[3])*x+_gamQ[4])*x+_gamQ[5])*x+_gamQ[6])*x + _gamQ[7] return z * p / q small: if x == 0 { return Inf(1) } return z / ((1 + Euler*x) * x) }

सही

 for x < 0 { if x > -1e-09 { return small(x, z) } z = z / x x = x + 1 } for x < 2 { if x < 1e-09 { return small(x, z) } z = z / x x = x + 1 } if x == 2 { return z } x = x - 2 p = (((((x*_gamP[0]+_gamP[1])*x+_gamP[2])*x+_gamP[3])*x+_gamP[4])*x+_gamP[5])*x + _gamP[6] q = ((((((x*_gamQ[0]+_gamQ[1])*x+_gamQ[2])*x+_gamQ[3])*x+_gamQ[4])*x+_gamQ[5])*x+_gamQ[6])*x + _gamQ[7] return z * p / q small(x, z) { if x == 0 { return Inf(1) } return z / ((1 + Euler*x) * x) } }

खोज

  • [x] स्वचालित

गोटो का समर्थन करने वाली भाषाओं में, हमारे लिंटर हमें इसके उपयोग के खिलाफ चेतावनी दे सकते हैं।

टैग

  • पठनीयता

निष्कर्ष

हमने कुछ दशक पहले GOTO की समस्याओं को स्वीकार किया था।

समस्या अभी भी आधुनिक भाषाओं जैसे GoLang, PHP, Perl आदि में मौजूद है।

अधिकांश प्रोग्रामर सौभाग्य से GOTO वाक्य से बचते हैं। अगला लक्ष्य हानिकारक शून्य उपयोग पर विचार करना होगा।


सौजन्य एक्सकेसीडी

संबंधों

कोड गंध 12 - शून्य

और जानकारी

क्रेडिट

Unsplash . पर जेन्स जॉनसन द्वारा फोटो


उन छात्रों को अच्छी प्रोग्रामिंग पढ़ाना व्यावहारिक रूप से असंभव है, जिनका BASIC से पूर्व संपर्क रहा है: संभावित प्रोग्रामर के रूप में वे पुनर्जनन की आशा से परे मानसिक रूप से विकृत हैं।

एड्सगर डिजस्ट्रा

सॉफ्टवेयर इंजीनियरिंग महान उद्धरण


और अभी के लिए बस इतना ही, हमने 100 मील का पत्थर पार कर लिया है।


अगला लेख 5 और कोड गंधों की व्याख्या करेगा!