

ตั้งชื่อตัวแปรและฟังก์ชันให้สื่อความหมาย — เขียนโค้ดที่อ่านแล้วเข้าใจได้ในตัว
ชื่อที่ดีไม่ต้องการ comment อธิบาย ชื่อที่แย่ทำให้ทีมเสียเวลาทุกครั้งที่อ่านโค้ด
มีโค้ดที่เขียนเมื่อหกเดือนก่อน พอกลับมาอ่านใหม่กลับต้องนั่งไล่ทีละบรรทัดว่า d คืออะไร tmp2 เก็บค่าอะไร และฟังก์ชันชื่อ process() ทำอะไรกันแน่
โค้ดนั้นรันได้ถูกต้อง แต่ทำให้เสียเวลาทุกครั้งที่ต้องแก้ไข
การตั้งชื่อที่ดีคือทักษะที่ส่งผลต่อทีมทุกคน ไม่ใช่แค่เรื่องความสวยงาม แต่เป็นเรื่องของการสื่อสาร — โค้ดที่เขียนดีควรอ่านแล้วเข้าใจได้โดยไม่ต้องมีคนมาอธิบาย
🤔 ทำไมชื่อถึงสำคัญขนาดนี้#
นักพัฒนาส่วนใหญ่ใช้เวลาอ่านโค้ดมากกว่าเขียนโค้ดหลายเท่า — ทุกนาทีที่ผู้อ่านต้องหยุดเดาว่าตัวแปรนี้หมายถึงอะไร คือเวลาที่หายไปเปล่า ๆ
ชื่อที่ดีทำหน้าที่เหมือน documentation ในตัวเอง ผู้อ่านไม่ต้องกระโดดไปดู comment หรือไปไล่หาว่าค่านี้ถูกสร้างมาจากไหน
📦 หลักการตั้งชื่อตัวแปร#
ใช้ชื่อที่บอกเจตนา ไม่ใช่แค่ชนิดข้อมูล
# ❌ ไม่ชัดเจน
d = 7
lst = ["Alice", "Bob"]
# ✅ ชัดเจน
days_until_deadline = 7
active_user_names = ["Alice", "Bob"]pythonเพียงเปลี่ยนชื่อ ผู้อ่านก็เข้าใจได้ทันทีว่าค่านี้คืออะไรและนำไปใช้อย่างไร
หลีกเลี่ยงตัวย่อที่คนอื่นเดาไม่ออก
ตัวย่อที่ทีมทุกคนรู้จัก เช่น id, url, html ใช้ได้ แต่ตัวย่อที่คิดขึ้นมาเอง เช่น usr, cnt, mgr มักสร้างความสับสนโดยไม่จำเป็น การพิมพ์ user, count, manager เพิ่มขึ้นนิดหน่อยแลกกับความชัดเจนที่ได้คืนมาคุ้มกว่ามาก
ตัวแปร boolean ควรอ่านเหมือนคำถาม
// ❌
let login = true;
let visible = false;
// ✅
let isLoggedIn = true;
let isVisible = false;javascriptเมื่ออ่านในเงื่อนไข if (isLoggedIn) จะอ่านออกว่าหมายความว่าอะไร แทนที่จะเป็น if (login) ที่อาจตีความได้หลายแบบ
⚙️ หลักการตั้งชื่อฟังก์ชัน#
ชื่อฟังก์ชันควรบอกว่าทำอะไร ไม่ใช่แค่บอกว่ามีการทำงาน
// ❌ กว้างเกินไป
function process(data) { ... }
function handle(input) { ... }
// ✅ ชัดเจน
function calculateMonthlyRevenue(orders) { ... }
function validateEmailFormat(email) { ... }typescriptชื่อ process บอกได้แค่ว่า “มีการประมวลผลบางอย่าง” แต่ไม่ได้บอกว่าประมวลผลอะไร ใครเรียกใช้ต้องเข้าไปอ่าน body ของฟังก์ชันก่อนถึงจะรู้
ฟังก์ชันที่คืนค่า boolean ควรตั้งชื่อเหมือนคำถาม
# ❌
def user_active(user): ...
def email(text): ...
# ✅
def is_user_active(user): ...
def is_valid_email(text): ...pythonระวังฟังก์ชันที่ชื่อดีแต่ทำหลายอย่าง
ถ้าชื่อฟังก์ชันต้องใส่คำว่า “and” เพื่ออธิบายว่าทำอะไร นั่นเป็นสัญญาณว่าฟังก์ชันนั้นทำมากเกินไป เช่น saveUserAndSendEmail() ควรแยกเป็นสองฟังก์ชันที่ทำหน้าที่ชัดเจนคนละอย่าง
🧭 จุดที่มักสับสนกัน — ชื่อดีแค่ไหนถึงพอ#
ไม่มีคำตอบตายตัว แต่มีคำถามง่าย ๆ ที่ช่วยตัดสินได้: “ถ้าคนอื่นอ่านบรรทัดนี้เป็นครั้งแรก ต้องหยุดคิดไหม?”
ชื่อที่ยาวเกินไปก็อ่านยาก เช่น numberOfActiveUserAccountsCreatedThisMonth อาจย่นเหลือแค่ active_users_this_month ได้โดยไม่สูญเสียความหมาย
หัวใจคือความสมดุลระหว่างความกระชับและความชัดเจน — พอดีกับบริบทที่ใช้
🤝 ความสม่ำเสมอในทีมสำคัญพอ ๆ กับการตั้งชื่อที่ดี#
ถ้าทีมหนึ่งใช้ get_user() อีกทีมใช้ fetchUser() และอีกคนใช้ loadUser() สำหรับสิ่งเดียวกัน ผู้อ่านต้องเดาทุกครั้งว่าทั้งสามแบบต่างกันอย่างไร
การตกลงกันในทีมว่าจะใช้คำไหนสำหรับแต่ละ pattern แล้วยึดให้สม่ำเสมอ ช่วยลดภาระทางความคิดได้มากกว่าการตั้งชื่อสวยแต่ไม่สอดคล้องกัน
📝 สรุป#
การตั้งชื่อที่ดีคือการลงทุนเล็ก ๆ ที่คืนผลทุกครั้งที่ทีมอ่านโค้ดนั้น หลักการหลักมีไม่กี่ข้อ:
- ชื่อตัวแปรบอกเจตนา ไม่ใช่แค่ชนิด
- ชื่อฟังก์ชันบอกว่าทำอะไร ไม่ใช่แค่บอกว่ามีการทำงาน
- boolean ทั้งตัวแปรและฟังก์ชันอ่านเหมือนคำถาม
- ความสม่ำเสมอในทีมสำคัญไม่แพ้การตั้งชื่อที่สวย
ถ้าอยากเริ่มต้นจากจุดเล็ก ๆ ลองเปิดโค้ดที่เขียนล่าสุดแล้วถามว่า “ถ้าคนใหม่เห็นบรรทัดนี้เป็นครั้งแรก ต้องอ่านนานแค่ไหนถึงจะเข้าใจ?” คำตอบนั้นบอกได้ว่ามีจุดไหนที่ควรปรับปรุงก่อน
😎 ☕