loopedloopless

ตั้งชื่อด้วย 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)

ซึ่งเป็นชื่อที่เน้นคำที่เกี่ยวข้องกับ”ปัญหา” ข้อดีคือ:

  1. ทุกคนเข้าใจตรงกัน แม้ว่าจะไม่ได้เป็นโปรแกรมเมอร์

  2. ไม่ต้องเปลี่ยนชื่อบ่อย เมื่อมีการเปลี่ยนแปลงของโค้ดภายใน (ซึ่งโค้ดมักเปลี่ยนแปลงบ่อยกว่าตัวปัญหา) ดังนั้น ถ้าต้องเลือกชื่อที่เกี่ยวกับ “วิธีแก้ปัญหา” VS “ปัญหา” ให้เลือกชื่อที่เกี่ยวกับ “ปัญหา” ครับ

← Back to blog