जावा में स्वच्छ कोड: नियम जो आपके प्रोजेक्ट को बचाएंगे

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

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

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

स्वच्छ कोड विलासिता नहीं, बल्कि आवश्यकता क्यों है

\n\n

कल्पना करें कि आप किसी और के प्रोजेक्ट में प्रवेश कर रहे हैं। क्लासेस का नाम Class1, Manager, UltraProcessor है। मेथड्स सब कुछ एक साथ करते हैं: डेटाबेस क्वेरी, HTML रेंडरिंग, और ईमेल भेजना। और वेरिएबल्स — x, y, temp। परिचित लगता है? यदि हाँ, तो आप जानते हैं कि ऐसा कोड कितनी जल्दी डेवलपर के जीवन को नरक बना देता है।

\n\n

जावा में स्वच्छ कोड पांडित्य के बारे में नहीं है। यह सहकर्मियों, भविष्य के स्वयं और व्यवसाय के प्रति सम्मान के बारे में है। गंदा कोड विकास को 2-3 गुना धीमा कर देता है, बग्स को मायावी बना देता है, और रिफैक्टरिंग को असंभव बना देता है। इस लेख में, हम विशिष्ट नियमों पर चर्चा करेंगे जो आपको ऐसा कोड लिखने में मदद करेंगे जिसे पढ़ना और बनाए रखना सुखद हो।

\n\n

नियम #1: नामकरण — 50% सफलता

\n\n

रॉबर्ट मार्टिन (अंकल बॉब) अपनी पुस्तक 'क्लीन कोड' में कहते हैं: एक अच्छा नाम टिप्पणी की जगह लेता है। Java डेवलपर्स अक्सर अमूर्त नामों का उपयोग करते हैं। आइए इसे ठीक करें।

\n\n

वेरिएबल्स: बताएं कि आप क्या संग्रहीत कर रहे हैं

\n\n

खराब:

\n
int d; // elapsed time in days
\n\n

अच्छा:

\n
int elapsedTimeInDays;
\n\n

खराब:

\n
List<String> list = new ArrayList<>();
\n\n

अच्छा:

\n
List<String> customerNames = new ArrayList<>();
\n\n

मेथड्स: क्रिया + संदर्भ

\n\n

मेथड को इस प्रश्न का उत्तर देना चाहिए 'यह क्या करता है?'। process, handle, doStuff जैसे सामान्य शब्दों से बचें।

\n\n

खराब:

\n
public void process(int id) {\n    // 50 строк кода: проверка, расчёт, отправка email\n}
\n\n

अच्छा:

\n
public void sendEmailConfirmation(int orderId) {\n    // только логика отправки email\n}
\n\n

क्लासेस: परजीवी प्रत्ययों के बिना संज्ञाएं

\n\n

Manager, Processor, Util से बचें, जब तक कि उचित न हो। क्लास को एक इकाई को प्रतिबिंबित करना चाहिए।

\n\n

खराब: DataProcessor, UserManager

\n

अच्छा: UserRepository, InvoiceCalculator, EmailSender

\n\n

नियम #2: मेथड्स — छोटे और एकल-कार्य वाले

\n\n

सुनहरा नियम: एक मेथड — एक जिम्मेदारी। यदि किसी मेथड में 15-20 से अधिक पंक्तियाँ हैं, तो संभवतः इसे विभाजित करने की आवश्यकता है। इससे Java कोड की पठनीयता बढ़ती है और परीक्षण सरल होता है।

\n\n

रिफैक्टरिंग का उदाहरण

\n\n

पहले:

\n
public boolean isValidOrder(Order order) {\n    if (order == null) return false;\n    if (order.getItems().isEmpty()) return false;\n    double total = 0;\n    for (Item item : order.getItems()) {\n        total += item.getPrice() * item.getQuantity();\n    }\n    if (total > 10000) {\n        // проверка кредитного лимита\n        User user = userRepository.findById(order.getUserId());\n        return user.getCreditLimit() >= total;\n    }\n    return true;\n}
\n\n

बाद में:

\n
public boolean isValidOrder(Order order) {\n    if (isOrderNullOrEmpty(order)) return false;\n    double total = calculateTotal(order);\n    if (isHighValueOrder(total)) {\n        return hasSufficientCredit(order.getUserId(), total);\n    }\n    return true;\n}\n\nprivate boolean isOrderNullOrEmpty(Order order) {\n    return order == null || order.getItems().isEmpty();\n}\n\nprivate double calculateTotal(Order order) {\n    return order.getItems().stream()\n            .mapToDouble(item -> item.getPrice() * item.getQuantity())\n            .sum();\n}\n\nprivate boolean isHighValueOrder(double total) {\n    return total > 10000;\n}\n\nprivate boolean hasSufficientCredit(int userId, double total) {\n    User user = userRepository.findById(userId);\n    return user.getCreditLimit() >= total;\n}
\n\n

नियम #3: टिप्पणियाँ — केवल जब उनके बिना काम न चले

\n\n

टिप्पणी अक्सर खराब कोड का बहाना होती है। '// получает' लिखने के बजाय

ब्लॉग

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