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