Screen Shot 2558-09-18 at 1.05.08 PM
เมื่อวานได้พูดคุยเกี่ยวกับการเขียน code ที่ดี
ซึ่งผมก็เขียน code ไม่ค่อยดี !!
แต่ก็ได้แนะนำแนวทางที่ดีกว่าเดิมไปเล็กน้อย
เป็นเรื่องเกี่ยวกับการเขียน IF เพื่อตรวจสอบข้อมูล
โดยมี IF-ELSE ซ้อนกันเยอะมาก ๆ จะแก้ไขอย่างไรดี ?

เริ่มจากคำว่า Clean Code ก่อนดีกว่า

Clean code สามารถอ่านได้ง่าย
Clean code สามารถทำความเข้าใจได้ง่าย
Clean code มันต้องเหมือนการเขียนหนังสือ
Clean code มันคือ code ที่ผู้เขียนใส่ใจ ไม่ใช่เขียนพอให้มันเสร็จ ๆ ไป

มาถึงคำถามดีกว่า ถ้าเจอ code แบบนี้ล่ะ
จะแก้ไขมันอย่างไรดี ?

คำถาม
คุณเห็นอะไรจาก code ข้างต้นบ้างล่ะ ?
คำตอบ
ก็เห็น if ซ้อน if สิ ถามได้ !!
หลาย ๆ คนอาจจะบอกว่า มันก็ต้องเขียนแบบนี้อยู่แล้ว
เพราะว่า มันเป็นเรื่องปกติ ใคร ๆ เขาก็เขียนกัน
แถมทำงานได้ดีด้วยนะ …

แต่ลองกลับมาดู code หน่อยสิว่า Code มันพูดอะไรออกมา !!

บ่งบอกว่า

  • คนเขียนกลัว ระแวง จากการเรียกใช้งาน method ต่าง ๆ มาก ( บ่อยครั้งเขียน code เหล่านั้นเอง )
  • ย้ำคิดย้ำทำ ออกแนว defensive programming มากไป
  • มันอ่านง่ายไหมล่ะนั่น ?
  • จะ if ซ้อน if กันไปไหน ลองคิดดูสิว่าถ้าเป็น process ที่ซับซ้อน น่าจะงงมากมาย

คำถาม
เราแก้ไขให้ code มันดูดีขึ้นได้ไหม ?
คำตอบ
ก็น่าจะทำได้นะ
ง่ายที่สุด คือ refactor code ใน if ให้เข้าใจง่าย ๆ
แต่ถ้าเราต้องการตัด if ออกไปล่ะ จะทำได้ไหม ?
เพื่อทำให้ code มันอ่านง่าย ๆ เช่น

code ชุดนี้อ่านง่ายกว่าไหมนะ ?
เราเน้นไปที่ process การทำงานที่มันถูกต้องก่อนเสมอ
ส่วนการทำงานที่ไม่ถูกต้อง ก็ให้โยน exception ออกมาซะ
จากนั้นให้ผู้เรียกใช้งาน ทำการจัดการ exception เหล่านั้นซะ
น่าจะเป็นแนวทางที่ดีกว่าเดิมนะครับ

Tell Don’t Ask นะครับ

สุดท้ายอย่าลืมว่า

การเขียน code มันมีขั้นตอนดังนี้

  • Make it work
  • Make it right
  • Make it better

คุณล่ะมีความคิดเห็นอย่างไรบ้างกับปัญหานี้ ?

Reference Website
Slide :: Clean Code