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