C++ में कोड रिव्यू: क्या जाँचें और फीडबैक कैसे दें
\n\nकोड रिव्यू (कोड की समीक्षा) विकास का एक अनिवार्य चरण है, खासकर C++ में। यह भाषा अपार स्वतंत्रता प्रदान करती है, लेकिन इसके साथ जिम्मेदारी भी आती है। शुरुआती डेवलपर्स के लिए, रिव्यू प्रक्रिया डरावनी लग सकती है, लेकिन वास्तव में यह सीखने का एक शक्तिशाली उपकरण है। इस लेख में, हम चर्चा करेंगे कि C++ कोड की जाँच करते समय किन बातों पर ध्यान देना चाहिए और फीडबैक कैसे दें ताकि वह उपयोगी हो, न कि आपत्तिजनक।
\n\n1. बुनियादी शुद्धता और मेमोरी सुरक्षा
\n\nकिसी भी C++ कोड में सबसे पहले जाँचने वाली बात मेमोरी के साथ सही काम करना है। C++ में गार्बेज कलेक्टर नहीं है, इसलिए यहाँ त्रुटियाँ गंभीर होती हैं।
\n\nक्या जाँचें:
\n- \n
- मेमोरी लीक: प्रत्येक
newके साथdeleteहोना चाहिए, प्रत्येकnew[]के साथdelete[]। बेहतर होगा कि स्मार्ट पॉइंटर्स (std::unique_ptr,std::shared_ptr) का उपयोग करें। \n - एरे की सीमा से बाहर जाना: त्रुटियों को पकड़ने के लिए ऑपरेटर
[]के बजायstd::vector::at()का उपयोग करें। \n - डैंगलिंग पॉइंटर्स: वे पॉइंटर्स जो पहले से मुक्त की गई मेमोरी को संदर्भित करते हैं। \n
- डबल फ्री: मेमोरी के एक ही ब्लॉक के लिए बार-बार
deleteकरना। \n
// खराब: मैन्युअल मेमोरी प्रबंधन\nint* arr = new int[100];\n// ... काम ...\ndelete[] arr; // भूलना आसान है\n\n// अच्छा: RAII का उपयोग करें\nstd::vector<int> arr(100);\n// मेमोरी अपने आप मुक्त हो जाएगी\n\nरिव्यूअर के लिए सुझाव: यदि आप रॉ पॉइंटर्स (int* ptr) या मैन्युअल new/delete देखते हैं, तो यह एक रेड फ्लैग है। std::unique_ptr या STL कंटेनरों का उपयोग करने का सुझाव दें।
2. स्टैंडर्ड लाइब्रेरी (STL) का उपयोग
\n\nC++20/23 एक समृद्ध स्टैंडर्ड लाइब्रेरी प्रदान करते हैं। शुरुआती अक्सर वहाँ खुद से कोड लिखते हैं जहाँ तैयार समाधानों का उपयोग किया जा सकता है।
\n\nचेकलिस्ट:
\n- \n
- कंटेनर: रॉ एरे के बजाय
std::vector,std::array,std::map। \n - एल्गोरिदम: मैन्युअल लूप के बजाय
std::find,std::sort,std::copy। \n - स्ट्रिंग्स:
char*के बजायstd::string। \n - स्ट्रीम्स: C-शैली
fopenके बजायstd::ifstream/std::ofstream। \n
// खराब: मैन्युअल खोज\nbool found = false;\nfor (int i = 0; i < vec.size(); ++i) {\n if (vec[i] == target) {\n found = true;\n break;\n }\n}\n\n// अच्छा: STL एल्गोरिदम\nbool found = std::find(vec.begin(), vec.end(), target) != vec.end();\n\nफीडबैक कैसे दें: "यह गलत है" कहने के बजाय, कहें: "बढ़िया तर्क! STL में एक तैयार फंक्शन std::find है जो वही काम करता है, लेकिन छोटा और सुरक्षित है। चलिए इसे उपयोग करने की कोशिश करते हैं?"
3. कोड शैली, नामकरण और कॉन्स्टेंटनेस
\n\nकोड की पठनीयता आधी सफलता है। पूरी तरह से काम करने वाला कोड भी बेकार है अगर उसे बनाए रखना संभव न हो।
\n\nकिन बातों पर ध्यान दें:
\n- \n
- नामकरण: वेरिएबल —
snake_case(C++ मानक के अनुसार), क्लासेस —PascalCase। एक अक्षर वाले नामों से बचें (काउंटर के लिएiको छोड़कर)। \n - कॉन्स्टेंटनेस: जो पैरामीटर बदलते नहीं हैं, उन्हें
constहोना चाहिए। जो मेथड ऑब्जेक्ट को नहीं बदलते, वेconstहोने चाहिए। \n - फ़ॉर्मेटिंग: एक समान इंडेंटेशन शैली (आमतौर पर 4 स्पेस), ऑपरेटरों के आसपास स्पेस। \n
- मैजिक नंबर: उन्हें कॉन्स्टेंट में डालें (
constexpr int MAX_SIZE = 100;)। \n
// खराब: अपठनीय\nint a = 5;\nfor(int i=0;i<10;i