परिचय: स्वच्छ कोड एक सफल प्रोजेक्ट की कुंजी क्यों है
देर-सबेर हर डेवलपर को "गंदा" कोड मिलता है: अर्थहीन वेरिएबल नाम, सैकड़ों पंक्तियों लंबे फंक्शन, दोहराए जाने वाले ब्लॉक और मैजिक नंबर। ऐसे कोड को पढ़ना मुश्किल है, बनाए रखना कठिन है, और पूरे एप्लिकेशन को तोड़ने के जोखिम के बिना विस्तार करना लगभग असंभव है। रॉबर्ट मार्टिन की पुस्तक "Clean Code" उन प्रोग्रामरों के लिए बाइबिल बन गई है जो गुणवत्तापूर्ण कोड लिखने का प्रयास करते हैं। इस लेख में, हम जावा में Clean Code के प्रमुख सिद्धांतों को स्पष्ट उदाहरणों के साथ समझेंगे, जो आपके कोड को समझने योग्य, विश्वसनीय और बनाए रखने में आसान बनाने में मदद करेंगे।
1. नामकरण: व्यवसाय की भाषा में बोलें
वेरिएबल, मेथड या क्लास का नाम इन सवालों का जवाब देना चाहिए: "यह क्या है?" और "इसकी आवश्यकता क्यों है?" एक अक्षर वाले संक्षिप्ताक्षरों और अमूर्त शब्दों से बचें।
खराब उदाहरण
int d; // ऑर्डर के बाद का समय (दिनों में)List<String> lst = new ArrayList<>();void prc() { ... }अच्छा उदाहरण
int daysSinceOrder;List<String> customerNames = new ArrayList<>();void processPayment() { ... }अतिरिक्त सुझाव
- क्लासेस — संज्ञाएँ:
Order,CustomerRepository। - मेथड्स — क्रियाएँ या क्रिया युग्म:
saveOrder(),isValidEmail()। - बचें "शोर" वाले शब्दों से:
Data,Info,Manager— यदि वे कोई अर्थ नहीं रखते हैं।
2. फंक्शन: छोटा, स्पष्ट, एक कार्य
फंक्शन को केवल एक कार्य करना चाहिए और उसे अच्छी तरह से करना चाहिए। आदर्श लंबाई 10-15 पंक्तियाँ है। यदि फंक्शन स्क्रीन पर फिट नहीं होता है, तो इसे विभाजित करें।
खराब उदाहरण: स्विस आर्मी नाइफ फंक्शन
public void processOrder(Order order) { // 1. सत्यापन if (order == null || order.getItems().isEmpty()) { throw new IllegalArgumentException("Invalid order"); } // 2. छूट की गणना double discount = 0; if (order.getTotal() > 1000) discount = 0.1; // 3. डेटाबेस में सहेजना database.save(order); // 4. ईमेल भेजना emailService.sendConfirmation(order.getCustomerEmail());}अच्छा उदाहरण: जिम्मेदारी का विभाजन
public void processOrder(Order order) { validateOrder(order); applyDiscount(order); persistOrder(order); notifyCustomer(order);}
private void validateOrder(Order order) { if (order == null || order.getItems().isEmpty()) { throw new IllegalArgumentException("Invalid order"); }}
private void applyDiscount(Order order) { if (order.getTotal() > 1000) { order.setDiscount(0.1); }}
private void persistOrder(Order order) { database.save(order);}
private void notifyCustomer(Order order) { emailService.sendConfirmation(order.getCustomerEmail());}3. दोहराव (DRY) और मैजिक नंबर से बचें
दोहराया जाने वाला कोड रखरखाव का सबसे बड़ा दुश्मन है। यदि आप कोड के एक ब्लॉक को कॉपी कर रहे हैं, तो इसका मतलब है कि इसे एक अलग मेथड या कॉन्स्टेंट में निकालने का समय आ गया है।
समस्या: मैजिक नंबर
if (age > 18) { ... } // 18 क्या है? न्यूनतम आयु? छूट की सीमा?समाधान: नामों वाले कॉन्स्टेंट
private static final int MINIMUM_DRIVING_AGE = 18;// ...if (age > MINIMUM_DRIVING_AGE) { ... }दोहराव का उदाहरण
// खराबdouble totalForFirst = price1 * quantity1 * 0.95;double totalForSecond = price2 * quantity2 * 0.95;
// अच्छाdouble calculateLineTotal(double price, int quantity) { return price * quantity * 0.95;}double totalForFirst = calculateLineTotal(price1, quantity1);double totalForSecond = calculateLineTotal(price2, quantity2);
ब्लॉग
पुस्तक अनुशंसाएँ
यह भी पढ़ें
PHP में Accessibility: सभी उपयोगकर्ताओं के लिए सुलभ वेबसाइट बनाएं
Go में परीक्षण: यूनिट, इंटीग्रेशन, e2e आरंभ से अंत तक
Python में JSON पार्स करना: पूरी गाइड
Kotlin में Jackson: त्रुटि "No Creators, like default construct, exist" को कैसे ठीक करें
Swift परियोजनाओं के लिए CI/CD: GitHub Actions A से Z तक
ब्लॉग
पुस्तक अनुशंसाएँ
यह भी पढ़ें
Python में JSON पार्स करना: पूरी गाइड