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 เพื่อทำการวนซ้ำผ่านรายการอย่างเรียบร้อย

การศึกษาลึก

ในทางประวัติศาสตร์, การปรับโค้ดมาจากชุมชนการเขียนโปรแกรม Smalltalk ในช่วงปลายทศวรรษที่ 80 และได้รับความนิยมจากหนังสือของ Martin Fowler ที่ชื่อ ‘Refactoring: Improving the Design of Existing Code’ ใน Lua, การปรับโค้ดมักเกี่ยวข้องกับการทำให้เงื่อนไขที่ซับซ้อนเรียบง่ายขึ้น, การแบ่งฟังก์ชันขนาดใหญ่ออกเป็นส่วนๆ ที่เล็กลง, และการปรับปรุงการใช้ตารางเพื่อประสิทธิภาพที่ดีขึ้น

การปรับโค้ดใน Lua มีข้อควรระวัง; ลักษณะแบบไดนามิกและการพิมพ์ที่ยืดหยุ่นของ Lua สามารถทำให้การปรับปรุงบางอย่าง เช่น การเปลี่ยนชื่อตัวแปรหรือการเปลี่ยนลายเซ็นฟังก์ชัน, เป็นเรื่องเสี่ยงหากไม่ทำอย่างระมัดระวัง เครื่องมือสำหรับการวิเคราะห์โค้ดแบบสถิต (เช่น luacheck) สามารถลดความเสี่ยงเหล่านี้ได้ ทางเลือกหนึ่ง ได้แก่ การพัฒนาตามหลักการที่ขับเคลื่อนด้วยการทดสอบ (TDD), ที่โค้ดจะถูกปรับเปลี่ยนอย่างต่อเนื่องเป็นส่วนหนึ่งของกระบวนการพัฒนา, ไม่ใช่เป็นขั้นตอนการปรับปรุงที่แยกต่างหาก

ดูเพิ่มเติม

  • “Programming in Lua” โดย Roberto Ierusalimschy สำหรับแนวปฏิบัติที่ดีที่สุดและตัวอย่าง
  • “Refactoring: Improving the Design of Existing Code” โดย Martin Fowler สำหรับหลักการที่ใช้ได้กับทุกภาษา
  • ไดเรกทอรี LuaRocks (https://luarocks.org/) สำหรับเครื่องมือและโมดูลที่มุ่งเน้นการบำรุงรักษาและการปรับปรุงโค้ด Lua