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/) לכלים ומודולים שמטרתם תחזוקה וריפקטורינג של קוד לואה.