PHP कोड रिव्यू: Senior डेवलपर क्या कहेंगे और कैसे बचें शर्मिंदगी से

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: आपका कोड क्यों दोबारा लिखवाया जाता है?

\n\n

आपने कोड लिखा। वह काम कर रहा है। आपको खुद पर गर्व है। लेकिन कोड रिव्यू आता है, और Senior डेवलपर 15 कमेंट्स छोड़ देता है, जिनमें से आधे "क्या होगा अगर..." या "चलो इसे ऐसे लिखते हैं..." से शुरू होते हैं। परिचित लग रहा है?

\n\n

PHP में कोड रिव्यू — यह नुक्स निकालना नहीं है। यह प्रोजेक्ट की उम्र बढ़ाने के लिए है। Senior डेवलपर सिर्फ "काम करता है/नहीं करता" नहीं देखते, बल्कि यह देखते हैं कि कोड लोड के तहत कैसा व्यवहार करेगा, दूसरा डेवलपर इसे कैसे मेंटेन करेगा, और छह महीने बाद बग ढूंढने में कितना समय लगेगा।

\n\n

इस लेख में हम उन सबसे आम टिप्पणियों को समझेंगे जो आपको अनुभवी PHP डेवलपर से कोड रिव्यू में सुनने को मिलेंगी। मैं वास्तविक कोड उदाहरण दिखाऊंगा और समझाऊंगा कि उन्हें कैसे सुधारें। पढ़ने के बाद, आप 80% टिप्पणियों का अनुमान लगा पाएंगे और ऐसा कोड लिख पाएंगे जो दिखाने में शर्म न आए।

\n\n

1. "मैजिक नंबर्स" और स्ट्रिंग्स: कोड को खुद बोलना चाहिए

\n\n

सबसे पहली चीज़ जो Senior नोटिस करेगा — वे अजीब नंबर और स्ट्रिंग्स जो कोड में बिखरे हुए हैं। मैजिक नंबर्स एक एंटीपैटर्न है जो पढ़ने की क्षमता को खत्म कर देता है।

\n\n

खराब उदाहरण

\n
if ($user->getAge() > 18) {\n    $discount = $price * 0.1;\n}
\n\n

Senior क्या कहेगा?

\n
    \n
  • 18 ही क्यों? यह वयस्कता की उम्र है या डिस्काउंट की सीमा?
  • \n
  • 0.1 क्यों? यह 10% है? क्या होगा अगर डिस्काउंट बदल जाए?
  • \n
\n\n

अच्छा उदाहरण

\n
const ADULT_AGE = 18;\nconst DISCOUNT_RATE = 0.1; // 10%\n\nif ($user->getAge() > ADULT_AGE) {\n    $discount = $price * DISCOUNT_RATE;\n}
\n\n

अब कोड खुद कहानी सुना रहा है। Senior को मंजूरी मिलेगी: कॉन्स्टेंट्स को दोबारा इस्तेमाल किया जा सकता है, एक जगह बदला जा सकता है, और उन्हें कमेंट्स की ज़रूरत नहीं है।

\n\n

2. टाइप्स की कमी: PHP 8 — डायनेमिक टाइपिंग का बहाना नहीं

\n\n

PHP एक कमजोर टाइपिंग वाली भाषा है, लेकिन इसका मतलब यह नहीं कि 2005 की तरह लिखें। सख्त टाइपिंग उन बग्स से बचाती है जिन्हें पकड़ना मुश्किल होता है।

\n\n

खराब उदाहरण

\n
function calculateTotal($items, $tax) {\n    $total = 0;\n    foreach ($items as $item) {\n        $total += $item['price'] * $item['quantity'];\n    }\n    return $total * (1 + $tax);\n}
\n\n

Senior की टिप्पणियाँ

\n
    \n
  • $items क्या है? Array? Object? Collection?
  • \n
  • एलिमेंट की संरचना क्या है? DTO क्यों नहीं?
  • \n
  • अगर $tax स्ट्रिंग "0.2" के रूप में पास किया जाए? तब कॉन्केटिनेशन होगा?
  • \n
\n\n

अच्छा उदाहरण

\n
declare(strict_types=1);\n\nclass OrderItem {\n    public function __construct(\n        public readonly float $price,\n        public readonly int $quantity\n    ) {}\n}\n\nfunction calculateTotal(array $items, float $taxRate): float {\n    $total = 0.0;\n    foreach ($items as $item) {\n        if (!$item instanceof OrderItem) {\n            throw new InvalidArgumentException('Expected OrderItem');\n        }\n        $total += $item->price * $item->quantity;\n    }\n    return $total * (1 + $taxRate);\n}
\n\n

Senior कहेगा: "शाबाश, तुम DTO, readonly प्रॉपर्टीज और सख्त टाइपिंग का उपयोग कर रहे हो। कोड पूर्वानुमानित है।" यह PHP 8+ की बेस्ट प्रैक्टिस है।

\n\n

3. गहरी नेस्टिंग और अर्ली रिटर्न (Early Return)

\n\n

जब आप एक मेथड के अंदर 5 लेवल के if...else देखते हैं, तो Senior अपना सिर पकड़ लेता है। ऐसे कोड को पढ़ना, टेस्ट करना और डीबग करना नामुमकिन है।

\n\n

खराब उदाहरण

\n
public function processOrder($order) {\n    if ($order->isPaid()) {\n        if ($order->hasStock()) {\n            if ($order->isShippable()) {\n                // 50 लाइनों की लॉजिक\n                return $this->ship($order);\n            } else {\n                throw new \\Exception('Order cannot be shipped');\n            }\n        } else {\n            throw new \\Exception('Out of stock');\n        }\n    } else {\n        throw new \\Exception('Order not paid');\n    }\                

ब्लॉग

पुस्तक अनुशंसाएँ