Screen Shot 2558-07-13 at 4.26.47 PM
ปัญหาใหญ่อันดับต้นๆ สำหรับนักพัฒนา คือ การตั้งชื่อ (Naming)
ไม่ว่าจะเป็นการตั้งชื่อ ตัวแปร class method และอื่นๆ อีกมากมาย

บางคนบอกไว้ว่า ชื่อที่แย่ๆ มันคือ Code smell
หรือเป็น code ที่อาจก่อให้เกิดปัญหาตามมาในอนาคต
เช่น การอ่าน ทำความเข้าใจ และ ดูแลรักษา

ดังนั้น เราในฐานนะนักพัฒนาควรพยายามตั้งชื่อสิ่งต่างๆ ให้มันสื่อ
และตรงหน้าที่การทำงานของมันซะ

คุณ Phil Karlton กล่าวไว้ว่า

“There are only two hard things in Computer Science: cache invalidation and naming things.”

แปลได้ว่า สิ่งที่ยากสุดใน Computer Science มี 2 อย่างคือ

  1. Cache invalidation
  2. Naming

โดยคุณ Martin Fowler ได้เพิ่มไปอีกหนึ่งอย่างคือ Off-by-one error
ซึ่งเป็น error ที่มาจาก logic การทำงานของ code ที่มันซับซ้อนซ่อนเงื่อนนั่นเอง

Code ที่เราเขียนนั้น

เริ่มมาจากเขียนขึ้นมาเพื่อให้ computer เข้าใจ
แต่เมื่อเวลาผ่านมาเรื่อยๆ เราได้พบเจอปัญหาต่างๆ มากมาย
ทำให้เราเรียนรู้ และ ปรับปรุง การเขียน code ให้มันดีขึ้น
นั่นคือ เราพยายามปรับปรุง และ สร้างภาษา program
ที่มันง่ายต่อการอ่าน และ เขียน
ดังจะได้เห็นได้จากภาษา program ใหม่ๆ

เป้าหมายหลักๆ คือ ก็คือการปรับปรุงเรื่อง naming ต่างๆ นั่นเอง
ยิ่งในปัจจุบันพูดถึง DSL (Domain Specific Language) กันเยอะ
ซึ่งเป็นหนึ่งในแนวทางของการพัฒนาเช่นเดียวกัน

Naming ที่ดี มันจะช่วยเราจัดการโครงสร้างต่างๆ ของระบบได้ดีขึ้น

นั่นคือ เราสามารถสร้างชื่อดีๆ เพื่อให้เป็น abstraction layer
เพื่ออะไรในสิ่งที่เราต้องการสร้าง (What)
โดยซ่อนความซับซ้อน หรือ รายละเอียดเชิงเทคนิคไว้ข้างหลัง (How)
หลายๆ คนจะพูดถึงแนวคิด DDD (Domain-Driven Design)

ชื่อที่ดีมีชัยไปกว่าครึ่ง

แต่ปัญหาที่พบเจอคือ ชื่อที่ตั้งมากันนั้น ห่วยแตกมากๆ !!

a b c d e f g
i j k
x y n
flag
IDC ABC SI USR IRB UTC IMSI และตัวย่ออื่นๆ อีกมากมาย

ลองคิดดู เวลาที่คุณไปอ่าน code ที่มีชื่อแย่ๆ
คุณต้องเสียเวลาไปมากเท่าไร ในการอ่าน และ ทำความเข้าใจ ?

ตอบแทนได้เลยว่า ใช้เวลาสูงมาก
นั่นแสดงว่า เราต้องใช้ค่าใช้จ่ายสูงขึ้นตามเช่นกัน

แต่ถามว่ามันยากไหม ?
ตอบได้เลยว่ายาก
แต่ถามว่าฝึกได้ไหม ?
ตอบได้เลยว่าฝึกได้
แต่ถามว่ามันจะดีขึ้นกว่าเดิมไหม ?
ตอบได้เลยว่า ดีขึ้นกว่าเดิมแน่นอน

ดังนั้น มาปรับปรุงการตั้งชื่อให้มันสื่อสารได้ดี กันดีกว่า !!

ปล.
ถ้าใน code ของคุณมีการตั้งชื่อต่างๆ ที่มันแย่
มันหมายความว่า คุณมีโอกาสที่จะปรับปรุงโครงสร้าง code ให้ดีขึ้นแล้วครับ