Java में कोड रिव्यू: क्या जाँचें और कैसे फीडबैक दें
Code review (कोड रिव्यू) सॉफ्टवेयर उत्पाद की गुणवत्ता और टीम के पेशेवर विकास को बढ़ाने के सबसे प्रभावी उपकरणों में से एक है। हालाँकि, जब Java की बात आती है, तो कई डेवलपर्स (विशेषकर जूनियर) या तो अपना कोड रिव्यू के लिए भेजने से डरते हैं, या नहीं जानते कि दूसरों के कोड की जाँच करते समय किन बातों पर ध्यान देना चाहिए। इस लेख में, हम चर्चा करेंगे कि Java कोड में वास्तव में क्या जाँचना चाहिए और टिप्पणियाँ कैसे तैयार करें ताकि सहकर्मी को ठेस न पहुँचे, बल्कि उन्हें बेहतर बनने में मदद मिले।
1. Java कोड में क्या जाँचें: तकनीकी चेकलिस्ट
पहली बात जो दिमाग में आती है वह है सिंटैक्स और लॉजिक। लेकिन पेशेवर रिव्यू इन सीमाओं से कहीं आगे जाता है। यहाँ प्रमुख पहलू दिए गए हैं जिन्हें प्रत्येक पुल-रिक्वेस्ट में जाँचना चाहिए।
1.1. आर्किटेक्चर और डिज़ाइन
देखें कि नया बदलाव मौजूदा आर्किटेक्चर में कितनी अच्छी तरह फिट बैठता है। क्या यह SOLID सिद्धांतों का उल्लंघन करता है? उदाहरण के लिए, यदि आप कोई ऐसा क्लास देखते हैं जो बहुत अधिक काम करता है (God Object), तो यह उसे विभाजित करने का सुझाव देने का एक कारण है।
- एकल उत्तरदायित्व का सिद्धांत (SRP): प्रत्येक क्लास में बदलाव का एक ही कारण होना चाहिए।
- निर्भरता उलटाव (DIP): ठोस कार्यान्वयन के बजाय अमूर्तताओं पर निर्भर रहें।
- पैटर्न: सिंगलटन, फैक्ट्री या स्ट्रेटेजी का उपयोग उचित होना चाहिए, न कि "बस मामले में" लागू किया जाना चाहिए।
// खराब: क्लास लॉजिक और सेविंग दोनों जानता हैpublic class UserService { public void registerUser(String name) { // वैलिडेशन // डेटाबेस में सेव // ईमेल भेजना }}
// अच्छा: जिम्मेदारी का विभाजनpublic class UserService { private final UserRepository repository; private final EmailService emailService;
public void registerUser(String name) { User user = new User(name); repository.save(user); emailService.sendWelcome(user); }}1.2. प्रदर्शन और मेमोरी प्रबंधन
Java स्वचालित मेमोरी प्रबंधन वाली भाषा है, लेकिन इसका मतलब यह नहीं है कि आप ऑप्टिमाइज़ेशन के बारे में भूल सकते हैं। जाँचें:
- लूप में स्ट्रिंग कॉन्केटनेशन:
StringBuilderयाStringBufferका उपयोग करें। - अनावश्यक ऑब्जेक्ट: हॉट लूप में अस्थायी ऑब्जेक्ट बनाना।
- कलेक्शन: सही इम्प्लीमेंटेशन का चयन (जैसे,
ArrayListबनामLinkedList)। - NullPointerException:
Optionalया null जाँच का उपयोग करें।
// खराब: मेमोरी में लाखों स्ट्रिंगString result = "";for (String s : list) { result += s;}
// अच्छा: StringBuilderStringBuilder sb = new StringBuilder();for (String s : list) { sb.append(s);}String result = sb.toString();1.3. त्रुटि और अपवाद प्रबंधन
Java में त्रुटि हमेशा बग नहीं होती। कभी-कभी यह अपवादों का गलत उपयोग होता है। ध्यान दें:
- खाली catch-ब्लॉक:
catch (Exception e) {}— यह बुराई है। त्रुटि को कम से कम लॉग तो करना चाहिए। - बहुत सामान्य अपवाद:
ExceptionयाThrowableको पकड़ना खराब प्रैक्टिस है। - संसाधन स्ट्रीम: स्वचालित बंद करने के लिए try-with-resources का उपयोग करें।
// खराब: अपवाद को निगलनाtry { // कुछ कोड} catch (Exception e) { // कुछ नहीं करते}
// अच्छा: लॉग करें और आगे भेजेंtry { // कुछ कोड} catch (SQLException e) { log.error("DB के साथ काम करते समय त्रुटि", e); throw new ServiceException("ऑपरेशन निष्पादित करने में विफल", e);}1.4. परीक्षण और कवरेज
परीक्षणों की जाँच के बिना कोड रिव्यू "आधा" रिव्यू है। सुनिश्चित करें कि: