ข้ามไปยังเนื้อหาหลัก
คู่มือระบบ เนื้อหาผ่านการตรวจสอบแล้ว

Clean Code: หลักการตั้งชื่อที่ดี

บทความนี้เน้นย้ำถึงความสำคัญของการตั้งชื่อที่ดีในการเขียน Clean Code โดยอธิบายว่าชื่อที่ดีควรสื่อความหมาย, หลีกเลี่ยงคำย่อ, สอดคล้องกับ Domain, มีรูปแบบที่สอดคล...

Clean Code: หลักการตั้งชื่อที่ดี

ในบทที่แล้ว เราได้เรียนรู้เกี่ยวกับการ Refactoring และเทคนิคเบื้องต้นในการปรับปรุงโค้ดให้ดีขึ้น ในบทนี้ เราจะมาเจาะลึกเรื่องหนึ่งที่สำคัญมากๆ ในการเขียน Clean Code นั่นก็คือ การตั้งชื่อ ที่ดีนั่นเอง การตั้งชื่อที่ดีไม่ได้หมายถึงแค่การตั้งชื่อให้แตกต่างจากคนอื่น แต่หมายถึงการตั้งชื่อที่สื่อความหมาย, อ่านง่าย และทำให้โค้ดของเราเข้าใจได้ง่ายขึ้นสำหรับทุกคนที่เข้ามาอ่าน รวมถึงตัวเราเองในอนาคตด้วย!

ทำไมการตั้งชื่อถึงสำคัญ?

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

การตั้งชื่อที่ดีจะช่วยให้:

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

หลักการตั้งชื่อที่ดี

ต่อไปนี้เป็นหลักการพื้นฐานในการตั้งชื่อที่ดีที่เราควรนำไปใช้:

1. ชื่อที่สื่อความหมาย

หลักการที่สำคัญที่สุดคือการตั้งชื่อที่สื่อความหมายให้มากที่สุด ชื่อควรบอกให้เราทราบว่าตัวแปรนั้นเก็บอะไร, ฟังก์ชันนั้นทำอะไร, หรือคลาสนั้นมีหน้าที่อะไร

ตัวอย่างที่ไม่ดี:

$d; // วันที่
$u; // ชื่อผู้ใช้
function processData($data) { ... } // ประมวลผลข้อมูล

จากตัวอย่างข้างต้น เราไม่สามารถบอกได้เลยว่า $d คือวันที่อะไร, $u คือชื่อผู้ใช้แบบไหน, หรือ processData() ประมวลผลข้อมูลอะไรบ้าง

ตัวอย่างที่ดี:

$orderDate; // วันที่สั่งซื้อ
$username; // ชื่อผู้ใช้
function processOrderData($orderData) { ... } // ประมวลผลข้อมูลการสั่งซื้อ

จากตัวอย่างนี้ เราสามารถเข้าใจได้ทันทีว่า $orderDate คือวันที่สั่งซื้อ, $username คือชื่อผู้ใช้, และ processOrderData() ประมวลผลข้อมูลการสั่งซื้อ

2. หลีกเลี่ยงชื่อย่อ

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

ตัวอย่างที่ไม่ดี:

$usr; // ผู้ใช้
$addr; // ที่อยู่
$cnt; // จำนวน

ตัวอย่างที่ดี:

$user; // ผู้ใช้
$address; // ที่อยู่
$count; // จำนวน

ถ้าจำเป็นต้องใช้ชื่อย่อจริงๆ ให้ใช้เฉพาะชื่อย่อที่เป็นที่รู้จักกันดีในวงกว้างเท่านั้น เช่น id (identifier), url (Uniform Resource Locator), html (HyperText Markup Language)

3. ใช้ชื่อที่สอดคล้องกับ Domain

ถ้าโปรเจกต์ของเราเกี่ยวข้องกับ Domain เฉพาะ (เช่น การเงิน, การแพทย์, การขนส่ง) เราควรใช้ชื่อที่สอดคล้องกับ Domain นั้นๆ เพื่อให้โค้ดของเราสื่อความหมายมากยิ่งขึ้นสำหรับคนที่ทำงานใน Domain นั้น

ตัวอย่าง:

สมมติว่าเรากำลังพัฒนาโปรแกรมสำหรับจัดการข้อมูลลูกค้าในธุรกิจค้าปลีก เราอาจจะใช้ชื่อเช่น customerId, productName, orderTotal แทนที่จะใช้ชื่อทั่วไป เช่น id, name, total

การใช้ชื่อที่สอดคล้องกับ Domain จะช่วยให้คนที่ทำงานใน Domain นั้นๆ เข้าใจโค้ดของเราได้ง่ายขึ้น และลดโอกาสในการตีความผิดพลาด

4. รูปแบบการตั้งชื่อ (Naming Conventions)

ถึงแม้ว่า PHP จะไม่ได้บังคับรูปแบบการตั้งชื่อที่ตายตัว แต่การใช้รูปแบบการตั้งชื่อที่สอดคล้องกันทั้งโปรเจกต์จะช่วยให้โค้ดของเราดูเป็นระเบียบและอ่านง่ายขึ้น

รูปแบบการตั้งชื่อที่นิยมใช้ใน PHP:

  • ตัวแปร: ใช้ camelCase (เช่น $firstName, $lastName)
  • ฟังก์ชัน: ใช้ camelCase (เช่น getUserName(), calculateTotal())
  • คลาส: ใช้ PascalCase (เช่น User, Product)
  • ค่าคงที่: ใช้ UPPER_SNAKE_CASE (เช่น MAX_VALUE, DEFAULT_TIMEOUT)

ตัวอย่าง:

class User {
    private $firstName;
    private $lastName;

    public function getFullName() {
        return $this->firstName . ' ' . $this->lastName;
    }
}

const MAX_USERS = 100;

5. ความยาวของชื่อ

ชื่อควรมีความยาวที่เหมาะสม ไม่สั้นจนเกินไปจนไม่สื่อความหมาย และไม่ยาวจนเกินไปจนอ่านยาก โดยทั่วไปแล้ว ชื่อควรมีความยาวประมาณ 1-3 คำ

ตัวอย่างที่ไม่ดี:

$veryLongVariableNameThatIsHardToRead; // ยาวเกินไป
$x; // สั้นเกินไป

ตัวอย่างที่ดี:

$customerName;
$orderTotal;

ตัวอย่างเพิ่มเติม

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

ตัวอย่างที่ไม่ดี:

function calc($a, $b) {
    return $a + $b;
}

$res = calc(5, 10);

ตัวอย่างที่ดี:

function calculateSum($number1, $number2) {
    return $number1 + $number2;
}

$sum = calculateSum(5, 10);

จากตัวอย่างนี้ เราจะเห็นได้ว่าการตั้งชื่อที่ดีช่วยให้โค้ดอ่านง่ายและเข้าใจง่ายขึ้นอย่างมาก

สรุป

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

ในบทถัดไป เราจะมาเรียนรู้เกี่ยวกับหลักการ Clean Code ในส่วนของฟังก์ชัน ว่าฟังก์ชันที่ดีควรมีลักษณะอย่างไร และเราจะเขียนฟังก์ชันให้สะอาดและอ่านง่ายได้อย่างไร

Office.in.th Custom Service

ต้องการพัฒนาระบบหรือปรับแต่งจากโครงสร้างนี้?

Office.in.th รับพัฒนาและออกแบบ Enterprise Web Application, API Integration และระบบบริหารงานภาครัฐ/เอกชน พร้อมการสนับสนุนระยะยาว

ดูบริการรับพัฒนาซอฟต์แวร์