Lua:
कोड सुधार

कैसे:

चलो एक सरल Lua फ़ंक्शन को रिफैक्टर करें। हम एक फ़ंक्शन से शुरू करते हैं जो सूची में संख्याओं का योग गणना करता है लेकिन यह कुशलता या स्पष्टता के लिए बहुत अधिक सोचे बिना लिखा गया है:

function sumList(numbers)
    local result = 0
    for i=1, #numbers do
        for j=1, #numbers do
            if i == j then
                result = result + numbers[i]
            end
        end
    end
    return result
end

print(sumList({1, 2, 3, 4})) -- परिणाम: 10

एक अधिक कुशल और पठनीय संस्करण में रिफैक्टर करें:

function sumListRefactored(numbers)
    local result = 0
    for _, value in ipairs(numbers) do
        result = result + value
    end
    return result
end

print(sumListRefactored({1, 2, 3, 4})) -- परिणाम अभी भी: 10

रिफैक्टर्ड संस्करण अतिरिक्त आंतरिक लूप को हटा देता है, ipairs का उपयोग करते हुए सूची के माध्यम से साफसुथरा इटरेट करता है।

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

ऐतिहासिक रूप से, रिफैक्टरिंग 80 के दशक के अंत में Smalltalk प्रोग्रामिंग समुदाय से आया था और मार्टिन फाउलर की पुस्तक ‘Refactoring: Improving the Design of Existing Code’ द्वारा लोकप्रिय हुआ था। Lua में, रिफैक्टरिंग अक्सर जटिल कंडीशनल्स को सरल बनाने, बड़े फ़ंक्शन्स को छोटे वाले में तोड़ने, और प्रदर्शन को बेहतर बनाने के लिए टेबल के उपयोग को अनुकूलित करने में शामिल होता है।

Lua में रिफैक्टरिंग के अपने संयोग हैं; Lua की गतिशील प्रकृति और लचीली टाइपिंग विशेष रिफैकट्स को, जैसे कि वेरिएबल्स का नाम बदलना या फ़ंक्शन सिग्नेचर बदलना, सावधानी से नहीं किया गया तो जोखिम भरा बना सकते हैं। स्थिर कोड विश्लेषण के लिए टूल्स (जैसे कि luacheck) ऐसे जोखिम को कम कर सकते हैं। विकल्पों में टेस्ट-ड्रिवन डेवलपमेंट (TDD) शामिल है, जहां कोड को विकास प्रक्रिया के एक अभिन्न हिस्से के रूप में लगातार रिफैक्टर किया जाता है, जबकि एक अलग रिफैक्टरिंग चरण के विपरीत।

देखें भी

  • “Programming in Lua” रोबर्टो Ierusalimschy द्वारा सर्वोत्तम प्रथाओं और उदाहरणों के लिए।
  • “Refactoring: Improving the Design of Existing Code” मार्टिन फाउलर द्वारा भाषाओं में व्यापक रूप से लागू होने वाले सिद्धांतों के लिए।
  • Lua कोड को बनाए रखने और रिफैक्टर करने के लिए उपकरणों और मॉड्यूल के लिए LuaRocks निर्देशिका (https://luarocks.org/)।