यह गंध करता है क्योंकि ऐसे कई उदाहरण हैं जहां इसे संपादित या बेहतर किया जा सकता है।
इनमें से अधिकतर गंध कुछ गलत होने का संकेत हैं। इसलिए, उन्हें अपने आप ठीक करने की आवश्यकता नहीं है ... (हालांकि, आपको इसे देखना चाहिए।)
आप पिछले सभी कोड गंध (भाग i - XXXIII) यहां पा सकते हैं।
आगे है...
गंभीर त्रुटि: ध्यान में न आया त्रुटि: वर्ग 'logs_queries_web' /var/www/html/query-line.php:78 में नहीं मिला
स्टैक ट्रेस: #0 {मुख्य} लाइन 718 पर /var/www/html/query-line.php में डाला गया
टीएल; डीआर: अपनी त्रुटियां पकड़ें। यहां तक कि जिनकी आप उम्मीद नहीं करते हैं।
एक शीर्ष-स्तरीय हैंडलर का प्रयोग करें।
रिटर्न कोड के पक्ष में भाषाओं से बचें।
डेटाबेस और निम्न-स्तरीय त्रुटियों की अपेक्षा करें।
यहां तक कि 2022 में, हम "गंभीर" वेबसाइटों को आकस्मिक उपयोगकर्ताओं को स्टैक या डिबगिंग संदेश दिखाते हुए देख सकते हैं।
<? Fatal error: Uncaught Error: Class 'MyClass' not found in /nstest/src/Container.php:9
<? // A user-defined exception handler function function myException($exception) { logError($exception->description()) // We don't show Exception to final users } // Set user-defined exception handler function set_exception_handler("myException");
हम उत्परिवर्तन परीक्षण का उपयोग समस्याओं का अनुकरण करने के लिए कर सकते हैं और देख सकते हैं कि क्या वे सही तरीके से संभाले गए हैं।
हमें परिपक्व बने रहने की जरूरत है।
हमारे समाधान मैला नहीं होना चाहिए।
हमें गंभीर सॉफ्टवेयर इंजीनियरों के रूप में अपनी प्रतिष्ठा सुधारने की जरूरत है।
कोड स्मेल सिर्फ मेरी राय है।
Unsplash पर जेसी ऑरिको द्वारा फोटो
मेरी 80 प्रतिशत समस्याएं सरल तर्क त्रुटियाँ हैं। शेष समस्याओं में से 80 प्रतिशत सूचक त्रुटियाँ हैं। शेष समस्याएं कठिन हैं।
मार्क डोनर
सॉफ्टवेयर इंजीनियरिंग महान उद्धरण
हैशिंग गारंटी देता है कि दो वस्तुएं अलग हैं। ऐसा नहीं है कि वे वही हैं।
टीएल; डीआर: यदि आप हैश की जांच करते हैं, तो आपको समानता की भी जांच करनी चाहिए
7 अक्टूबर, 2022 को, बड़े ब्लॉकचेन में से एक को रोकना पड़ा।
यह खबर चौंकाने वाली थी क्योंकि परिभाषा के अनुसार अधिकांश ब्लॉकचेन विकेंद्रीकृत हैं।
आप यहां एक पूरा लेख पढ़ सकते हैं:
कैसे एक हैकर ने एक कोड स्मेल का फायदा उठाते हुए $566M USD चुरा लिए
public class Person { public String name; // Public attributes are another smell @Override public boolean equals(Person anotherPerson) { return name.equals(anotherPerson.name); } @Override public int hashCode() { return (int)(Math.random()*256); } // This is just an example of non-correlation // When using HashMaps we can make a mistake // and guess the object is not present in the collection }
public class Person { public String name; // Public attributes are another smell @Override public boolean equals(Person anotherPerson) { return name.equals(anotherPerson.name); } @Override public int hashCode() { return name.hashCode(); } // This is just an example of non-correlation }
कई लिंटर्स में हैश और समानता पुनर्वितरण के नियम हैं।
उत्परिवर्तन परीक्षण के साथ, हम एक ही हैश के साथ विभिन्न वस्तुओं को सीड कर सकते हैं और अपने परीक्षणों की जांच कर सकते हैं।
हर प्रदर्शन सुधार की अपनी कमियां हैं।
कैश और प्रतिकृति उल्लेखनीय उदाहरण हैं।
हम उन्हें सावधानी से इस्तेमाल कर सकते हैं (जरूरी है)।
कोड स्मेल सिर्फ मेरी राय है।
यह आपके कुछ पाठकों को आश्चर्यचकित करेगा, लेकिन मेरी प्राथमिक रुचि कंप्यूटर सुरक्षा में नहीं है। मैं मुख्य रूप से ऐसे सॉफ़्टवेयर लिखने में दिलचस्पी रखता हूँ जो ठीक से काम करता हो।
विटसे वेनेमा
सॉफ्टवेयर इंजीनियरिंग महान उद्धरण
हमें कुछ बदलाव करने की जरूरत है। हमें स्पष्ट होना चाहिए कि ऐसा क्यों है
टीएल; डीआर: अपने डिजाइन या कार्यान्वयन निर्णयों पर घोषणात्मक बनें।
कभी-कभी हमें मनमाना नियम आसानी से परीक्षण योग्य नहीं लगते।
यदि हम असफल परीक्षण नहीं लिख सकते हैं, तो हमें एक टिप्पणी के बजाय एक उत्कृष्ट और घोषणात्मक नाम के साथ एक कार्य करने की आवश्यकता है।
// We need to run this process with more memory set_memory("512k) run_process();
increase_memory_to_avoid_false_positives(); run_process();
यह एक अर्थपूर्ण गंध है।
हम टिप्पणियों का पता लगा सकते हैं और हमें चेतावनी दे सकते हैं।
संहिता गद्य है। और डिजाइन के फैसले कथात्मक होने चाहिए।
कोड स्मेल 05 - अपशब्दों पर टिप्पणी करें
कोड गंध 75 - एक विधि के अंदर टिप्पणियाँ
कोड स्मेल सिर्फ मेरी राय है।
Unsplash पर Goh Rhy Yan द्वारा फोटो
लोगों की तरह कार्यक्रम भी पुराने हो जाते हैं। हम उम्र बढ़ने को नहीं रोक सकते, लेकिन हम इसके कारणों को समझ सकते हैं, इसके प्रभावों को सीमित कर सकते हैं और कुछ नुकसानों को उलट सकते हैं।
मारियो फुस्को
सॉफ्टवेयर इंजीनियरिंग महान उद्धरण
एक साथ दो या अधिक चीजें न बनाएं।
टीएल; डीआर: अपने तरीकों में जितना संभव हो उतना परमाणु बनने की कोशिश करें
https://maximilianocontieri.com/refactoring-002-extract-method
यदि आप 'और' के साथ एक विधि का नाम देते हैं, तो संभवतः आप एक एक्सट्रैक्ट-एंड-ब्रेक विधि अवसर खो रहे हैं।
calculatePrimeFactorsRemoveDuplicatesAndPrintThem() // Three responsibilities
calculatePrimeFactors(); removeDuplicates(); printNumbers(); // Three different methods // We can test them and reuse them
कुछ लिंटर हमें 'और' शब्द सहित विधियों के बारे में चेतावनी दे सकते हैं।
तरीके बनाते समय, कुछ रबर डक की कहानी खेलना और खुद को बताना बहुत महत्वपूर्ण है कि क्या हम चीजों को सही बना रहे हैं।
%[ https://maximilianocontieri.com/code-smell-85-and-functions ]
कोड स्मेल सिर्फ मेरी राय है।
अनस्प्लैश पर स्कॉट संकर द्वारा फोटो
प्रोग्रामिंग की कला सीखना, अधिकांश अन्य विषयों की तरह, पहले नियमों को सीखना और फिर उन्हें तोड़ना सीखना शामिल है।
जोशुआ बलोच
विकसित करना बहुत अच्छा है। रिफैक्टरिंग अद्भुत है। इसे एक ही समय पर न बनाएं
टीएल; डीआर: एक ही समय में कार्यात्मक रूप से और रिफैक्टर न बदलें।
कभी-कभी हमें पता चलता है कि आगे के विकास के लिए रिफैक्टरिंग की आवश्यकता है।
हम सीखने में माहिर हैं।
हमें अपने समाधान को ताक पर रख देना चाहिए। रिफैक्टरिंग पर काम करें, और हमारे समाधान के साथ जारी रखें।
getFactorial(n) { return n * getFactorial(n); } // Rename and Change factorial(n) { return n * factorial(n-1); } // This is a very small example // Things go works while dealing with huge code
getFactorial(n) { return n * getFactorial(n); } // Change getFactorial(n) { return n * getFactorial(n-1); } // Run the tests factorial(n) { return n * factorial(n-1); } // Rename
यह एक रिफैक्टरिंग गंध है।
हमें एक भौतिक टोकन का उपयोग करना चाहिए।
या तो हम रिफैक्टरिंग चरण या विकासशील चरण में हैं।
कोड स्मेल सिर्फ मेरी राय है।
अनस्प्लैश पर डैनी जिंग द्वारा फोटो
जब मैं कोड का अध्ययन कर रहा हूं, तो रिफैक्टरिंग मुझे उच्च स्तर की समझ में ले जाती है जिसे मैं अन्यथा याद करता हूं। जो लोग कॉम्प्रिहेंशन रिफैक्टरिंग को कोड के साथ बेकार की फिजूलखर्ची के रूप में खारिज करते हैं, उन्हें यह एहसास नहीं होता है कि वे भ्रम के पीछे छिपे अवसरों को कभी नहीं देखते हैं।
मार्टिन फाउलर
5 और कोड स्मेल जल्द ही आ रहे हैं...