DataflowAnomalyAnalysis: मिले 'के लिए DD'-विसंगति चर' चर ' (लाइनों' n1 '-' n2 ')।
डेटाफ्लोएनोमालीएलालिसिस: 'डीयू'-परिवर्तनीय 'चर' के लिए विसंगति ' (रेखाएं' एन 1 '-' एन 2 ')।
कोई विचार नहीं।
NullAssignment: शून्य पर ऑब्जेक्ट असाइन करना एक कोड गंध है। रिफैक्टरिंग पर विचार करें।
ऑब्जेक्ट को null
पर कचरा संग्रह में सहायता नहीं करेगा, यदि वस्तु एक स्थानीय वस्तु है (विधि के बाहर उपयोग नहीं की जाती है)? या वह एक मिथक है?
स्थानीय तरीकों में ऑब्जेक्ट्स विधि लौटने के बाद एकत्रित कचरा के रूप में चिह्नित किए जाते हैं। उन्हें शून्य पर सेट करने से कोई फर्क नहीं पड़ता।
चूंकि इससे कम अनुभव डेवलपर्स कम हो जाएंगे, इसके बारे में उस शून्य कार्य को कोड गंध माना जा सकता है।
MethodArgumentCouldBeFinal: पैरामीटर 'परम' निर्दिष्ट नहीं की जाती और हो सकता है घोषित अंतिम
LocalVariableCouldBeFinal: स्थानीय चर 'चर' अंतिम घोषित किया जा सकता
उपयोग करने के लिए क्या कोई लाभ कर रहे हैं final
पैरामीटर और चर?
यह स्पष्ट करता है कि वस्तु वस्तु के जीवन चक्र के दौरान मूल्य नहीं बदलेगा।
इसके अलावा, अगर किसी भी मौके पर कोई व्यक्ति मूल्य आवंटित करने का प्रयास करता है, तो संकलक इस कोडिंग त्रुटि को संकलित प्रकार पर रोक देगा।
इस पर विचार करें:
public void businessRule(SomeImportantArgument important) {
if(important.xyz()){
doXyz();
}
// some fuzzy logic here
important = new NotSoImportant();
// add for/if's/while etc
if(important.abc()){ // <-- bug
burnTheHouse();
}
}
मान लीजिए कि आप कुछ रहस्यमय बग कि समय-समय पर घर जलता का समाधान करने के लिए आवंटित कर रहे हैं।
आपको पता है कि इस्तेमाल किया पैरामीटर या, क्या आप समझ में नहीं आता है क्योंburnTHeHouse
विधि अगर स्थिति (अपने निष्कर्षों के अनुसार)
यह आप थोड़ी देर के लिए ले कर पूरी नहीं की जाती शुरू हो जाती है खोजने के लिए कि मध्य में किसी बिंदु पर, सोमोन संदर्भ बदलें, और आप अन्य ऑब्जेक्ट का उपयोग कर रहे हैं।
final
का उपयोग इस तरह की चीजों को रोकने में मदद करता है।
LooseCoupling: तरह कार्यान्वयन प्रकार के प्रयोग से बचें 'LinkedList'; इंटरफ़ेस बजाय
का उपयोग करते हैं मुझे पता है कि मैं विशेष रूप से एक LinkedList
की जरूरत है, यही कारण है कि मैं अपने इरादे स्पष्ट रूप से भविष्य डेवलपर्स के लिए स्पष्ट करना एक का उपयोग नहीं होगा? कक्षा को वापस करने की एक बात है जो क्लास पथ को उच्चतम बनाता है जो समझ में आता है, लेकिन मैं अपने चर को सख्त अर्थ के रूप में क्यों घोषित नहीं करूंगा?
इस मामले में कोई अंतर नहीं है। मुझे लगता है कि चूंकि आप LinkedList
विशिष्ट कार्यक्षमता का उपयोग नहीं कर रहे हैं, तो सुझाव उचित है।
आज, लिंक्डलिस्ट समझ में आ सकता है, लेकिन एक इंटरफेस का उपयोग करके आप अपने स्वयं को (या दूसरों) को आसानी से बदलने में मदद करते हैं।
छोटी, निजी परियोजनाओं के लिए यह बिल्कुल समझ में नहीं आता है, लेकिन चूंकि आप पहले से ही एक विश्लेषक का उपयोग कर रहे हैं, मुझे लगता है कि आप पहले से ही कोड की गुणवत्ता की परवाह करते हैं।
इसके अलावा, अच्छी आदतें बनाने के लिए कम अनुभवी डेवलपर की सहायता करता है। [मैं यह नहीं कह रहा हूँ आप एक कर रहे हैं, लेकिन क्या आप जानते हैं विश्लेषक नहीं है;)]
AvoidSynchronizedAtMethodLevel: उपयोग ब्लॉक स्तर बल्कि विधि स्तर से तुल्यकालन
क्या फायदे करता ब्लॉक स्तर तुल्यकालन विधि-स्तर सिंक्रनाइज़ेशन खत्म हो गया है?
सिंक्रनाइज़ अनुभाग को बेहतर छोटा। बस।
इसके अलावा, यदि आप विधि स्तर पर सिंक्रनाइज़ करते हैं तो आप संपूर्ण ऑब्जेक्ट को अवरुद्ध कर देंगे। जब आप ब्लॉक स्तर पर सिंक्रनाइज़ करते हैं, तो आप उस विशिष्ट अनुभाग को सिंक्रनाइज़ करते हैं, कुछ परिस्थितियों में जो आपको चाहिए।
AvoidUsingShortType: कम प्रकार
मेरी पहली भाषाओं थे C और C++, लेकिन जावा दुनिया में, मैं क्यों नहीं प्रकार है कि अपने डेटा का सबसे अच्छा वर्णन का उपयोग करना चाहिए का उपयोग न करें?
मैंने कभी इसके बारे में नहीं सुना है, और मैं आपसे सहमत हूं :) मैंने कभी भी कम उपयोग नहीं किया है।
मेरा अनुमान है कि इसका उपयोग न करके, आप अपने स्वयं को int
पर अपग्रेड करने में मदद करेंगे।
कोड गंध प्रदर्शन अनुकूलन की तुलना में कोड गुणवत्ता के लिए अधिक उन्मुख हैं। इसलिए कार्यक्रम की गति में सुधार के मुकाबले कम अनुभवी प्रोग्रामर के लिए सलाह दी जाती है और नुकसान से बचने के लिए सलाह दी जाती है।
इस तरह, आप बेहतर डिज़ाइन के लिए कोड बदलने की कोशिश करते समय बहुत समय और निराशा बचा सकते हैं।
यदि यह सलाह समझ में नहीं आती है, तो बस उन्हें अनदेखा करें, याद रखें, आप डेवलपर प्रभारी हैं, और टूल केवल एक उपकरण है। अगर कुछ गलत हो जाता है, तो आप उपकरण को दोष नहीं दे सकते, है ना?
प्रकार बाइट के संचालन किसी भी परिचालन में int को बढ़ावा दिया जाता है। –
तो टाइप 'char' के संचालन हैं, लेकिन यह इस प्रश्न के लिए प्रासंगिक नहीं है। – erickson