Skip to main content

เนื้อหาภาษาไทย / Thai content

System guide Content reviewed

Refactoring เบื้องต้น: ทำความสะอาด Code ง่ายๆ

บทความนี้แนะนำเกี่ยวกับการ Refactoring ซึ่งเป็นกระบวนการปรับปรุงโครงสร้างโค้ดโดยไม่เปลี่ยนผลลัพธ์ เพื่อให้โค้ดอ่านง่าย, แก้ไขง่าย และลดความซับซ้อน โดยนำเสนอเทคน...

Refactoring เบื้องต้น: ทำความสะอาด Code ง่ายๆ

หลังจากที่เราได้เรียนรู้การเขียน Unit Test และการวัด Code Coverage ในบทก่อนๆ แล้ว สิ่งสำคัญอีกอย่างหนึ่งในการพัฒนาซอฟต์แวร์คือการ Refactoring หรือการปรับปรุงโค้ดให้ดีขึ้น โดยไม่เปลี่ยนแปลงผลลัพธ์การทำงานของมัน การ Refactoring ช่วยให้โค้ดของเราอ่านง่ายขึ้น เข้าใจง่ายขึ้น และง่ายต่อการแก้ไขและบำรุงรักษาในอนาคต

ในบทนี้ เราจะมาเรียนรู้เทคนิค Refactoring ง่ายๆ ที่คุณสามารถนำไปใช้ได้ทันที เพื่อปรับปรุงโค้ดของคุณให้สะอาดตาและมีประสิทธิภาพมากยิ่งขึ้น

Refactoring คืออะไร?

Refactoring คือกระบวนการปรับปรุงโครงสร้างภายในของโค้ด โดยไม่เปลี่ยนแปลงพฤติกรรมภายนอกของมัน พูดง่ายๆ คือการ "จัดระเบียบ" โค้ดให้ดูดีขึ้น ทำงานได้ดีขึ้น โดยที่โปรแกรมยังคงทำงานได้เหมือนเดิม

ทำไมต้อง Refactoring?

  • อ่านง่ายขึ้น: โค้ดที่อ่านง่าย ช่วยให้เราเข้าใจการทำงานของมันได้เร็วขึ้น และลดโอกาสในการเกิดข้อผิดพลาด
  • แก้ไขง่ายขึ้น: โค้ดที่จัดระเบียบดี ทำให้การแก้ไขและเพิ่มฟีเจอร์ใหม่ๆ ทำได้ง่ายขึ้น
  • ลดความซับซ้อน: Refactoring ช่วยลดความซับซ้อนของโค้ด ทำให้โค้ดมีโครงสร้างที่ชัดเจนและเข้าใจได้ง่าย
  • ป้องกันการเกิด Bug: โค้ดที่สะอาด มักจะลดโอกาสในการเกิด Bug หรือข้อผิดพลาด

Refactoring ไม่ใช่การแก้ไข Bug หรือการเพิ่มฟีเจอร์ใหม่ แต่มันคือการปรับปรุงโค้ดที่มีอยู่ให้ดีขึ้น

เทคนิค Refactoring ง่ายๆ

ต่อไปนี้คือเทคนิค Refactoring ที่คุณสามารถนำไปใช้ได้ง่ายๆ ในโปรเจกต์ PHP ของคุณ:

1. Rename Variable (เปลี่ยนชื่อตัวแปร)

การตั้งชื่อตัวแปรให้สื่อความหมาย เป็นสิ่งสำคัญอย่างยิ่งในการเขียนโค้ดที่ดี ชื่อตัวแปรที่ดี จะช่วยให้คนอื่น (รวมถึงตัวคุณเองในอนาคต) เข้าใจว่าตัวแปรนั้นใช้ทำอะไร

ปัญหา: ชื่อตัวแปรไม่สื่อความหมาย หรือใช้ตัวย่อที่ไม่ชัดเจน

วิธีแก้ไข: เปลี่ยนชื่อตัวแปรให้สื่อความหมายมากขึ้น

ตัวอย่าง:

// โค้ดก่อน Refactoring
$n = 10; // จำนวนสินค้า

// โค้ดหลัง Refactoring
$numberOfProducts = 10; // จำนวนสินค้า

ในตัวอย่างนี้ ตัวแปร $n ไม่ได้บอกอะไรเราเลยว่ามันคืออะไร การเปลี่ยนเป็น $numberOfProducts ทำให้ชัดเจนขึ้นทันทีว่าตัวแปรนี้ใช้เก็บจำนวนสินค้า

ข้อควรจำ: ชื่อตัวแปรที่ดี ควรบอกให้ได้ว่าตัวแปรนั้นใช้เก็บอะไร และมีข้อมูลประเภทไหน

2. Extract Method (แยกส่วนของโค้ดออกมาเป็น Method)

เมื่อฟังก์ชันหรือ Method ของคุณยาวเกินไป หรือมีหลายส่วนที่ทำงานแตกต่างกัน การแยกส่วนของโค้ดออกมาเป็น Method ย่อยๆ จะช่วยให้โค้ดของคุณอ่านง่ายขึ้น และง่ายต่อการนำกลับมาใช้ใหม่ (reuse)

ปัญหา: ฟังก์ชันยาวเกินไป ทำหลายอย่างพร้อมกัน

วิธีแก้ไข: แยกส่วนของโค้ดออกมาเป็น Method ย่อยๆ ที่ทำหน้าที่เฉพาะเจาะจง

ตัวอย่าง:

// โค้ดก่อน Refactoring
function processOrder($order) {
  // ตรวจสอบข้อมูล Order
  if (empty($order['items'])) {
    throw new Exception("Order is empty");
  }

  // คำนวณราคารวม
  $totalPrice = 0;
  foreach ($order['items'] as $item) {
    $totalPrice += $item['price'] * $item['quantity'];
  }

  // บันทึก Order ลง Database
  // ... code สำหรับบันทึก Order ...

  return $totalPrice;
}

// โค้ดหลัง Refactoring
function processOrder($order) {
  validateOrder($order);
  $totalPrice = calculateTotalPrice($order['items']);
  saveOrderToDatabase($order);
  return $totalPrice;
}

function validateOrder($order) {
  if (empty($order['items'])) {
    throw new Exception("Order is empty");
  }
}

function calculateTotalPrice($items) {
  $totalPrice = 0;
  foreach ($items as $item) {
    $totalPrice += $item['price'] * $item['quantity'];
  }
  return $totalPrice;
}

function saveOrderToDatabase($order) {
  // ... code สำหรับบันทึก Order ...
}

ในตัวอย่างนี้ เราได้แยกฟังก์ชัน processOrder ออกเป็น 3 ฟังก์ชันย่อย คือ validateOrder, calculateTotalPrice และ saveOrderToDatabase แต่ละฟังก์ชันทำหน้าที่เฉพาะเจาะจง ทำให้โค้ดอ่านง่ายขึ้นและง่ายต่อการแก้ไข

ข้อควรจำ: พยายามแยกส่วนของโค้ดที่มีหน้าที่แตกต่างกัน ออกมาเป็น Method ย่อยๆ Method ที่ดี ควรทำหน้าที่เดียว และมีชื่อที่สื่อความหมาย

3. Inline Variable (แทนที่ตัวแปรด้วยค่าของมัน)

ในบางครั้ง การมีตัวแปรมากเกินไป อาจทำให้โค้ดอ่านยากขึ้น หากตัวแปรนั้นถูกใช้เพียงครั้งเดียว และค่าของมันไม่ได้ซับซ้อนมาก การแทนที่ตัวแปรด้วยค่าของมันโดยตรง อาจช่วยให้โค้ดกระชับและอ่านง่ายขึ้น

ปัญหา: ตัวแปรที่ถูกใช้เพียงครั้งเดียว ทำให้โค้ดดูรก

วิธีแก้ไข: แทนที่ตัวแปรด้วยค่าของมันโดยตรง

ตัวอย่าง:

// โค้ดก่อน Refactoring
function getDiscountedPrice($price, $discountPercentage) {
  $discountAmount = $price * $discountPercentage;
  $discountedPrice = $price - $discountAmount;
  return $discountedPrice;
}

// โค้ดหลัง Refactoring
function getDiscountedPrice($price, $discountPercentage) {
  return $price - ($price * $discountPercentage);
}

ในตัวอย่างนี้ เราได้แทนที่ตัวแปร $discountAmount และ $discountedPrice ด้วยค่าของมันโดยตรง ทำให้โค้ดสั้นลงและอ่านง่ายขึ้น

ข้อควรจำ: การ Inline Variable ควรทำเมื่อตัวแปรนั้นถูกใช้เพียงครั้งเดียว และค่าของมันไม่ได้ซับซ้อนมาก หากค่าของตัวแปรซับซ้อน หรือถูกใช้หลายครั้ง การ Inline Variable อาจทำให้โค้ดอ่านยากขึ้น

สรุป

Refactoring เป็นกระบวนการที่สำคัญในการพัฒนาซอฟต์แวร์ การ Refactoring ช่วยให้โค้ดของเราอ่านง่ายขึ้น เข้าใจง่ายขึ้น และง่ายต่อการแก้ไขและบำรุงรักษา ในบทนี้ เราได้เรียนรู้เทคนิค Refactoring ง่ายๆ 3 อย่าง คือ Rename Variable, Extract Method และ Inline Variable คุณสามารถนำเทคนิคเหล่านี้ไปใช้ได้ทันที เพื่อปรับปรุงโค้ดของคุณให้สะอาดตาและมีประสิทธิภาพมากยิ่งขึ้น

ในบทต่อไป เราจะมาเรียนรู้เกี่ยวกับ Clean Code ซึ่งเป็นหลักการและแนวทางในการเขียนโค้ดที่ดี เพื่อให้โค้ดของเราสะอาด อ่านง่าย และง่ายต่อการบำรุงรักษา

Office.in.th Custom Service

Want to build or adapt a system from this structure?

Office.in.th designs and develops enterprise web applications, API integrations, and public- and private-sector management systems, with long-term support.

See our software development service