ตั้งชื่อด้วย Problem Domain Terms
There are only two hard things in Computer Science: cache invalidation and naming things. ― Phil Karlton
การตั้งชื่อให้กับ variables, functions, etc. เป็นปัญหาที่ยาก
เพราะมันไม่มีมาตรฐานที่ชัดเจนว่าควรตั้งชื่ออย่างไร
การลงทุนใช้เวลาคิดตั้งชื่อให้ดี
จะทำให้โค้ดที่เราเขียน ง่ายต่อการดูแล และแก้ไข ในอนาคต
หนึ่งในเทคนิคการตั้งชื่อคือ
ให้เราใช้ problem domain terms (คำที่เกี่ยวข้องกับตัวปัญหา)
แทนการใช้คำที่มาจาก solution domain (คำที่เกี่ยวกับวิธีการแก้ปัญหา)
ตัวอย่างเช่น
enqueue_item(queue, item)
add_song_to_playlist(playlist, song)
ชื่อ function ไหน น่าจะมีคนอ่านแล้วเข้าใจ ได้มากกว่ากัน?
แน่นอนว่า ถ้าไม่ใช่โปรแกรมเมอร์ add_song_to_playlist
น่าจะเข้าใจได้ง่ายกว่า
enqueue_item
เป็นคำที่เกี่ยวกับ”วิธีการแก้ปัญหา”
add_song_to_playlist
เป็นคำที่เกี่ยวกับ”ปัญหา”
ชื่อไหน น่าจะมีโอกาสเปลี่ยนแปลงบ่อยกว่ากัน?
สมมติว่า โปรแกรมเมอร์ อยากเปลี่ยน data strucuture จาก queue เป็น array
ถ้าใช้ชื่อแบบแรก
ก็ต้องมีการเปลี่ยนจาก enqueue_item(queue, item)
เป็นอีกชื่อนึง เช่น add_item_to_array(array, item)
ถ้าเราใช้ชื่อ add_song_to_playlist(playlist, song)
ซึ่งเป็นชื่อที่เน้นคำที่เกี่ยวข้องกับ”ปัญหา” ข้อดีคือ:
ทุกคนเข้าใจตรงกัน แม้ว่าจะไม่ได้เป็นโปรแกรมเมอร์
ไม่ต้องเปลี่ยนชื่อบ่อย เมื่อมีการเปลี่ยนแปลงของโค้ดภายใน (ซึ่งโค้ดมักเปลี่ยนแปลงบ่อยกว่าตัวปัญหา) ดังนั้น ถ้าต้องเลือกชื่อที่เกี่ยวกับ “วิธีแก้ปัญหา” VS “ปัญหา” ให้เลือกชื่อที่เกี่ยวกับ “ปัญหา” ครับ