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 לעיבור דרך הרשימה בצורה נקייה.

צלילה עמוקה

בהיסטוריה, ריפקטורינג בא מקהילת התכנות של Smalltalk בסוף שנות ה-80 והופך לפופולרי על ידי הספר של מרטין פאולר ‘Refactoring: Improving the Design of Existing Code’. בלואה, ריפקטורינג לעיתים כולל פישוט תנאים מורכבים, פיצול פונקציות גדולות לקטנות יותר, ואופטימיזציה של שימוש בטבלאות לשיפור הביצועים.

יש הסתייגויות לגבי ריפקטורינג בלואה; הטבע הדינמי של לואה וההקלדה הגמישה יכולים להפוך ריפקטורינגים מסוימים, כמו שינוי שמות משתנים או שינוי חתימות פונקציות, לסיכוניים אם לא נעשים בזהירות. כלים לניתוח קוד סטטי (כמו luacheck) יכולים להקטין סיכונים כאלה. חלופות כוללות פיתוח מונע בדיקות (TDD), שבו הקוד נרפקטר באופן רציף כחלק בלתי נפרד מתהליך הפיתוח, בניגוד לשלב ריפקטורינג נפרד.

ראה גם

  • “תכנות בלואה” מאת רוברטו אירוסלימסקי למיטב התרגולים ודוגמאות.
  • “Refactoring: Improving the Design of Existing Code” מאת מרטין פאולר לעקרונות החלים על פני שפות.
  • מדריך LuaRocks (https://luarocks.org/) לכלים ומודולים שמטרתם תחזוקה וריפקטורינג של קוד לואה.