5 कोड गंध वाली 20 कहानियां प्रत्येक 100 कोड गंध हैं, है ना?
चलो जारी रखते है...
आप वस्तुओं के स्वामी नहीं हैं।
टीएल; डीआर: मेरा नाम उपसर्ग के रूप में उपयोग न करें।
कई पुराने ट्यूटोरियल 'माई' शब्द को आलसी नाम के रूप में इस्तेमाल करते हैं। यह अस्पष्ट है और संदर्भ गलतियों को जन्म देता है।
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 */
हम अपने लिंटर्स और स्टैटिक चेकर्स को इस उपसर्ग को खोजने के लिए कह सकते हैं और हमें चेतावनी दे सकते हैं।
मेरा उपयोग करने से बचें। उपयोग संदर्भ के अनुसार वस्तुएं बदलती हैं।
Unsplash . पर Michał Bożek द्वारा फोटो
कोड को संशोधित करने के अपने अनुभव के बारे में सोचते हुए, मैं देखता हूं कि मैं नया कोड लिखने की तुलना में मौजूदा कोड को पढ़ने में अधिक समय लगाता हूं। अगर मैं अपना कोड सस्ता बनाना चाहता हूं, तो मुझे इसे पढ़ने में आसान बनाना चाहिए।
केंट बेकी
सॉफ्टवेयर इंजीनियरिंग महान उद्धरण
हमें उपयोगकर्ताओं (और स्वयं) के लिए त्रुटि विवरण के साथ विशेष ध्यान रखना चाहिए।
टीएल; डीआर: सार्थक विवरण का प्रयोग करें और सुधारात्मक कार्यों का सुझाव दें।
प्रोग्रामर शायद ही कभी यूएक्स विशेषज्ञ होते हैं।
हम इस तथ्य को भी कम आंकते हैं कि हम काउंटर के दोनों किनारों पर हो सकते हैं।
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 . पर विजुअल द्वारा फोटो
हालांकि यह एक ज्ञात तथ्य है कि प्रोग्रामर कभी गलती नहीं करते हैं, फिर भी आपके प्रोग्राम में महत्वपूर्ण बिंदुओं पर त्रुटियों की जांच करके उपयोगकर्ताओं को हास्य देना एक अच्छा विचार है।
रॉबर्ट डी. श्नाइडर
वर्तनी और पठनीयता मनुष्यों के लिए बहुत महत्वपूर्ण है और मशीनों के लिए महत्वपूर्ण नहीं है।
TL; DR: अपने नामों का ध्यान रखें।
हम में से बहुत से लोग अपनी पहली भाषा के रूप में अंग्रेजी नहीं बोलते हैं।
हमें अपने ग्रंथों और नामों की अतिरिक्त देखभाल करने की आवश्यकता है।
इस लेख के शीर्षक में संदर्भ के प्रमाण के रूप में एक टाइपो है और एक क्लिकबेट भी है
comboFeededBySupplyer = supplyer.providers();
comboFedBySupplier = supplier.providers();
अपने नामों पर पूरा ध्यान दें।
आप शायद कुछ महीनों में कोड पढ़ने वाले व्यक्ति होंगे।
कोड गंध 48 - मानकों के बिना कोड
वास्तव में एक नाम क्या है - भाग I द क्वेस्ट
वास्तव में एक नाम क्या है — भाग II पुनर्वसन
Unsplash . पर ब्रेट जॉर्डन द्वारा फोटो
हर अच्छे से लिखे गए बड़े प्रोग्राम के अंदर एक अच्छा लिखा हुआ छोटा प्रोग्राम होता है।
कार होरे
हम कितनी बार आलसी तर्क नाम देखते हैं?
TL; DR: भूमिका के अनुसार अपने तर्कों को नाम दें, न कि आकस्मिक स्थिति के अनुसार
विधियाँ लिखते समय, हम आमतौर पर अच्छे नाम खोजने के लिए रुकते नहीं हैं।
हम स्पष्ट को कभी भी रिफलेक्टर नहीं करते हैं, न ही।
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 . पर प्रिसिला डू प्रीज़ द्वारा फोटो
अंतिम स्रोत कोड वास्तविक सॉफ़्टवेयर डिज़ाइन है।
जैक रीव्स
GOTO को 50 साल पहले हानिकारक माना जाता था
टीएल; डीआर: कभी भी गोटो का प्रयोग न करें।
मैंने बेसिक में प्रोग्रामिंग शुरू की।
वहां 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) } }
गोटो का समर्थन करने वाली भाषाओं में, हमारे लिंटर हमें इसके उपयोग के खिलाफ चेतावनी दे सकते हैं।
हमने कुछ दशक पहले GOTO की समस्याओं को स्वीकार किया था।
समस्या अभी भी आधुनिक भाषाओं जैसे GoLang, PHP, Perl आदि में मौजूद है।
अधिकांश प्रोग्रामर सौभाग्य से GOTO वाक्य से बचते हैं। अगला लक्ष्य हानिकारक शून्य उपयोग पर विचार करना होगा।
सौजन्य एक्सकेसीडी
Unsplash . पर जेन्स जॉनसन द्वारा फोटो
उन छात्रों को अच्छी प्रोग्रामिंग पढ़ाना व्यावहारिक रूप से असंभव है, जिनका BASIC से पूर्व संपर्क रहा है: संभावित प्रोग्रामर के रूप में वे पुनर्जनन की आशा से परे मानसिक रूप से विकृत हैं।
एड्सगर डिजस्ट्रा
सॉफ्टवेयर इंजीनियरिंग महान उद्धरण
और अभी के लिए बस इतना ही, हमने 100 मील का पत्थर पार कर लिया है।
अगला लेख 5 और कोड गंधों की व्याख्या करेगा!