เมื่อวานได้พูดคุยเกี่ยวกับการเขียน 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