Joseph-oh-my-god
เมื่อวานทำการ post รูปเกี่ยวกับ nest-if
หรือ code ที่มี if-else จำนวนเยอะ และ ลึกลับซับซ้อน

ซึ่งมันบ่งบอกถึงอะไรบ้างนะ
ความซับซ้อนของระบบงานหรือเปล่านะ ?
ความขี้เกียจ หรือ มักง่าย ของนักพัฒนา software หรือเปล่านะ ?
ความไม่สนใจของใครหลายๆ คนที่เกี่ยวข้องหรือเปล่านะ ?
และสุดท้ายมันคือภาระ หรือ ปัญหาที่คนดูแลต่อมาต้องแบกรับหรือเปล่านะ ?

ขออนุญาตยืม post ของคุณ Watcharagon Khotawan
มาใช้นะครับ คือ ป่าดงอีฟ

จาก code ที่ผมได้พบเจอมานั้น เป็นดังรูป

10492999_10153380965788588_2497275998801968783_o

code ก็มีความซับซ้อนไม่เท่าไรนะครับ!!
เพียงแค่ใน for loop มี if
และใน if มี if
และใน if มี if
และใน if มี if
เพียงเท่านี้เอง !!!
การจัดรูปแบบของ code สวยมากมาย

จากนั้นก็เริ่มมีคนที่สนใจ ส่ง code มาให้ดูบ้างเล็กน้อย
ตัวอย่างเช่น

Code จากคุณ Chaloemphon Thipkasorn

11357288_10204106979985824_3897294659989668045_o

ถ้าให้เดาก็น่าจะเป็น code จัดการข้อมูลจาก database
ซึ่งมี column จำนวนมากมาย
สิ่งที่พบเจอใน code นี้คือ duplicate code
ซึ่งมันคือ root of evil หลักของการพัฒนา software เลยก็ว่าได้
แถมจำนวนบรรทัดของ code มันเยอะมากมาย
ไม่อยากจะคิดถึงการดูแลรักษา code ชุดนี้เลยว่าจะเป็นอย่างไร ?

จากนั้นมาดู code จาก Pitsanu Swangpheaw

11391538_10153411416611967_8306126261567795600_n

เป็น code ที่ตั้งชื่อว่า 16 ชั้นฟ้า 15 ชั้นดิน
ซึ่งมันก็เป็นไปตามนั้นจริงๆ
เป็น codeท ที่ย่อมาแล้วนะ
ถ้าเจอตัว code เต็มๆ ไม่อยากจะคิดเลยว่ามันจะเป็นอย่างไร ?

คำถามที่น่าสนใจกับ code ชุดนี้คือ
อะไรคือต้นเหตุของความซับซ้อน ?
จาก requirement ?
จาก ทีมพัฒนา ?
จาก เวลา และ ความกดดัน ?
จาก ความไม่ใส่ใจ ?
จาก ….

ส่งผลให้ code ชุดนี้ มันอาจจะทำงานได้จริง
แต่มันยากต่อการดูแลรักษามากๆ
ทั้งการเพิ่ม แก้ไข และ ลด การทำงานในส่วนนี้ !!!

แต่สิ่งที่น่าสนใจกว่าการมาบอกว่า code ดังกล่าวมันซับซ้อน คือ

เมื่อคุณรู้ว่า code เหล่านั้นมันไม่ดี แล้ว
คุณทำให้ code เหล่านั้นมันดีขึ้นมาบ้างไหม เช่น

  • คุณได้ทำการ refactor code บ้างไหม ? เช่นทำการ extract เงื่อนไขต่างๆออกมา เป็น method หรือ class
  • คุณได้ทำการเขียน test เพื่อประกบส่วนการทำงานนี้ ก่อนที่จะทำการแก้ไขหรือไม่
  • คุณลดความซับซ้อนของ code ลงหรือไม่
  • คุณทำให้ code มันอ่าน และ เข้าใจง่ายขึ้นหรือไม่

หรือเพียงแค่บ่นๆ ไปเท่านั้น แล้วก็เพิ่มสิ่งที่แย่ๆ หรือ สิ่งที่คุณบ่นเข้าไป !!

ผมเคยเขียน blog เพื่อลดการใช้งาน if-else ไว้นิดหน่อย
น่าจะพอเป็นแนวทางการแก้ไขได้ครับ

ปล.
ใครที่มี code ยากจะโชว์ และ คิดว่ามันคือ ป่าดงอิฟ
ก็เอามาแบ่งปันกันได้นะครับ
เพื่อเป็นการเปิดหูเปิดตากันครับ