Rust:
कोड सुधार

कैसे:

चलिए एक सरल Rust कोड को और अधिक व्यवहारिक और रखरखावयोग्य बनाने के लिए रिफैक्टर करते हैं। हम एक फ़ंक्शन से शुरू करते हैं जो इंटीजर्स के वेक्टर का योग कैलकुलेट करता है:

fn sum(vec: &Vec<i32>) -> i32 {
    let mut sum = 0;
    for i in vec {
        sum += i;
    }
    sum
}

fn main() {
    let numbers = vec![1, 2, 3, 4, 5];
    println!("सम है {}", sum(&numbers));
}

आउटपुट:

सम है 15

अब, चलिए इसे इटरेटर्स और fold मेथड का लाभ उठाकर और अधिक व्यवहारिक Rust का उपयोग करके रिफैक्टर करते हैं:

fn sum(vec: &[i32]) -> i32 {
    vec.iter().fold(0, |acc, &x| acc + x)
}

fn main() {
    let numbers = vec![1, 2, 3, 4, 5];
    println!("सम है {}", sum(&numbers));
}

आउटपुट में कोई बदलाव नहीं—यह अभी भी 15 है—लेकिन रिफैक्टर किया गया संस्करण साफ है और इसमें Rust की ताकत जैसे कि उधार लेना और इटरेटर मेथड्स का उपयोग होता है।

गहराई में जाकर

रिफैक्टरिंग की जड़ें Smalltalk समुदाय में हैं और इसे Java दुनिया में Martin Fowler की पुस्तक “Refactoring: Improving the Design of Existing Code” द्वारा लोकप्रिय बनाया गया। इसके सिद्धांत सार्वभौमिक हैं और Rust पर भी लागू होते हैं, जहाँ सुरक्षा और समानांतरता महत्वपूर्ण हैं। Rust में रिफैक्टरिंग के दौरान, Rust कम्पाइलर एक सुरक्षा जाल के रूप में कार्य करता है, क्योंकि यह समय पर मुद्दों की पकड़ बनाकर मजबूत कोड लिखने को प्रोत्साहित करता है।

मैन्युअल रिफैक्टरिंग के विकल्पों में कोड फॉर्मेटिंग के लिए ‘rustfmt’ और लिंटिंग के लिए ‘clippy’ जैसे ऑटोमेटेड टूल्स का उपयोग शामिल है, जो कोड लिखने के और अधिक व्यवहारिक तरीकों का सुझाव दे सकते हैं। हालांकि, गहरी रिफैक्टरिंग अक्सर कोड के डिजाइन की सोच-समझ कर समझने की मांग करती है, जिसे ये टूल्स पूरी तरह से ऑटोमेट नहीं कर सकते।

Rust में, रिफैक्टरिंग अधिक प्रकार के उपयोग, जीवनकालों का प्रभावी ढंग से लेवरेज करना, अनावश्यक आवंटनों को कम करना, या जरूरत पड़ने पर Arc<Mutex<T>> का उपयोग करके समानांतरता पैटर्न को लागू करना शामिल हो सकता है। unwrap() से Result<T, E> के साथ अधिक व्यक्तिगत त्रुटि हैंडलिंग में संक्रमण भी आम है।

और देखें

Rust में रिफैक्टरिंग में और गहराई में जाने के लिए: