PHP:
การปรับโครงสร้างโค้ด
วิธีการ:
ลองนำตัวอย่างโค้ด PHP แบบคลาสสิกมา Refactoring กันดู
ก่อนการ Refactoring โค้ดของเราอาจจะดูเหมือนนี้:
function printOrderDetails($order) {
foreach ($order as $item) {
echo "Item: " . $item['name'];
echo " - Price: " . $item['price'];
echo "<br>";
}
if (!empty($order)) {
echo "Total: " . array_sum(array_column($order, 'price'));
}
}
แต่เราสามารถปรับโค้ดนี้ให้ดีขึ้นเพื่อความชัดเจนและ modular ดังนี้:
function printItem($item) {
echo "Item: {$item['name']} - Price: {$item['price']}<br>";
}
function calculateTotal($order) {
return array_sum(array_column($order, 'price'));
}
function printOrderDetails(array $order) {
array_walk($order, 'printItem');
if (!empty($order)) {
echo "Total: " . calculateTotal($order);
}
}
ด้วยการแยกฟังก์ชัน printOrderDetails
ออกเป็นฟังก์ชันย่อย ๆ ทำให้โค้ดของเราอ่านง่ายและง่ายต่อการตรวจสอบข้อผิดพลาด
การศึกษาลึก
Refactoring มีรากฐานมาจากชุมชนการโปรแกรม smalltalk ในช่วงต้น 1990s และได้รับความนิยมมากขึ้นจากหนังสือที่สำคัญของ Martin Fowler ชื่อ “Refactoring: Improving the Design of Existing Code” (1999) ในขณะที่การ Refactoring สามารถใช้ได้กับภาษาโปรแกรมใด ๆ PHP ที่มีความละเอียดอ่อนทางไดนามิก ช่วยให้เกิดความท้าทายและโอกาสพิเศษ
ทางเลือกอื่น ๆ ต่อการ Refactoring อาจรวมถึงการเขียนโค้ดใหม่จากต้น ซึ่งมักจะเสี่ยงและใช้เวลามากขึ้น ในระบบนิเวศของ PHP, เครื่องมือเช่น PHPStan และ Rector สามารถสังเกตและดำเนินการ Refactoring โดยอัตโนมัติได้ ตามลำดับ ในด้านการบริหารจัดการ, การเก็บ Refactoring ไว้เล็ก ๆ และการทดสอบอย่างกว้างขวางด้วย unit tests เป็นวิธีการสำคัญในการรับประกันการ Refactoring ที่ประสบความสำเร็จโดยไม่นำเข้าบัก
ดูเพิ่มเติม
- หนังสือ Refactoring ของ Martin Fowler: https://martinfowler.com/books/refactoring.html
- PHPStan, เครื่องมือวิเคราะห์สถิติ PHP: https://phpstan.org/
- Rector, เครื่องมือสำหรับการ Refactoring โค้ด PHP โดยอัตโนมัติ: https://getrector.org/
- การทดสอบ Unit ใน PHP ด้วย PHPUnit: https://phpunit.de/