Screen Shot 2558-02-24 at 1.29.26 PM
เรื่องที่ 31 ที่นักพัฒนาควรรู้ และ เข้าใจก็คือ Only the Code Tells the Truth

สิ่งที่จะบอกความจริงได้มากที่สุดคือ code ที่มันทำงานอยู่นั่นเอง
นั่นก็คือ binary code ที่ถูกแปลงมา
แต่การจะไปอ่าน binary code คงเป็นเรื่องที่ยากลำบาก และ ไม่สนุก
ดังนั้น source code จึงเป็นสิ่งที่อธิบายความจริงได้ชัดเจนที่สุด !!

คำถาม
ถ้าคุณต้องการรู้ว่าระบบทำงานอย่างไร ?
คำตอบ
ให้อ่าน code ของระบบ มันจะบอกและอธิบายทุกๆ อย่าง

บางคนบอกว่า ไปอ่านเอกสารสิ
แต่บ่อยครั้งพบว่า เอกสารมันไม่เคย update และ บอกความจริงของระบบเลย !!
เอกสารมันอธิบายเพียง high level เท่านั้น
แล้วเราก็ลงไปดูในรายละเอียดที่ code อีกที

ยิ่งเอกสารเกี่ยวกับการออกแบบ
ยิ่งไร้ซึ่งรายละเอียดการทำงานของระบบจริงๆ

Code มันอธิบายการทำงานของระบบทั้งหมดนะเออ … แต่

ในใจของแต่ละคน คงจะคิดอยู่ว่า

  • Code เนี่ยนะ ?
  • Code อ่านยากสาดดด ?
  • แก้ไขมันยังยากมากเลยนะ ?
  • สาดดดด

ก่อนอื่นเรากลับมาถามตัวเราเองก่อนดีไหม ?

ว่า code ที่คุณเขียน หรือ คนอื่นๆ เขียนนั้นมันบอกหรืออธิบายอะไรได้ไหม ?
ว่า code ที่คุณเขียน หรือ คนอื่นๆ เขียนนั้นมันบอกหรืออธิบายอะไรบ้าง ?

บางคนอาจจะบอกว่า
ไปอ่าน comment ไงล่ะ มันบอกทุกอย่างที่คุณต้องการนะ
แต่ผมแนะนำบางอย่างว่า comment มันไม่ใช่ code ที่ทำงานจริงๆ นะ
ดังนั้น comment มันสามารถผิดได้ และ อาจจะอธิบายไม่ตรงกับสิ่งที่ทำงานจริงๆ
ดังนั้น comment ไม่น่าใช่นะเออ

ถ้าคุณต้องการ comment ใน code แล้วให้ลองก่อนสักเล็กน้อยไหมว่า
เราต้องการ refactor ไหม ?
code มันสามารถ refactor ไหม ?

ถ้าต้องการ comment เพื่ออธิบายการเปลี่ยนแปลงต่างๆ แล้ว
ให้ทำการเขียน comment ใน message การ commit ของ Version control ดีกว่าไหม ?

แล้วเราจะทำอย่างไร เพื่อให้ code มันอธิบายว่าตัวมันทำอะไร ?
ยากมากเลยนะ !!!

ลองเริ่มง่ายๆ ด้วย ตั้งชื่อให้มันสื่อ ถึงสิ่งที่มันทำก่อนไหม ?
ผมเคยเจอ method หนึ่งใน code แบบนี้

feburary(24, 2015);

คุณคิดว่า จำเป็นต้องมี comment หรือไม่ ?
คุณคิดว่า code มันสามารถอธิบายการทำงานของมันเองได้หรือไม่ ?
ลองคิดดูเองนะครับ

ดังนั้น เราสามารถแยกกลุ่มการทำงานต่างๆ ด้วย ชื่อนั่นเอง

จากนั้นทำการเขียน automate test
เพื่ออธิบายพฤติกรรมการทำงาน
รวมทั้งตรวจสอบการใช้งาน ว่าทำงานได้ตรงตามที่คาดหวังไว้หรือไม่

ยังไม่พอ ให้ทำการ refactor code
ในส่วนที่ไม่เข้าใจ หรือ ยุ่งเหยิง
เพื่อทำให้ code มันง่ายต่อการเข้าใจ
เพื่อทำให้ code มันเรียบง่าย
เพื่อทำให้ code มันอ่านง่าย

และปิดด้วยนักพัฒนาต้องมีทัศนคติที่ดี
เนื่องจาก code ที่ดีหรือไม่ มันก็มาจากทัศนคติ แนวคิด ของคนนั้นๆ ด้วยนะ

สุดท้ายแล้ว

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

คนที่มาดูแล code ชุดนั้น จะบอกคุณเองว่า code ของคุณเป็นอย่างไร !!