เรื่องที่ 4 ที่นักพัฒนาควรรู้ และ เข้าใจก็คือ Improve code by Remove it
หรือวิธีการปรับปรุง code ด้วยการลบ code ออกไปเสียบ้าง
อีกคำหนึ่งก็คือ Less is more หรือ การทำน้อยแต่ได้มาก
code ก็เช่นเดียวกันนะครับ เขียนให้น้อยๆ แต่สามารถแก้ไขปัญหาได้
รวมทั้งเขียนในสิ่งที่จำเป็นเท่านั้น
ปัจจุบันเราเขียน code อย่างไรกันหนอ ?
ถ้าใครรู้จักกับ Extreme Programming (XP Programming)
น่าจะเคยได้ยินคำว่า You Aren’t Gonna Need It (YAGNI)
คือการทำในสิ่งที่เราจำเป็น หรือ ต้องการใช้ในขณะนั้นเท่านั้น
ไม่ต้องไปเผื่ออนาคตอะไรมากนัก
จำไว้ว่า ถ้าตอนนี้คุณยังไม่จำเป็นต้องใช้งาน ก็ไม่จำเป็นต้องสร้างมันขึ้นมาหรอกนะ
แต่แปลกนะ !!
นักพัฒนาบางคนมักจะเขียน code เผื่อไว้เสมอ บ่อยครั้งที่มันไม่ถูกใช้งาน เอะยังไงๆๆ ??
และที่แปลกมากๆ คือ code เหล่านั้นมันก็คงอยู่ในระบบของเรา
แถมไม่มีใครคิดจะลบ หรือ ลบมันออกไป เพราะว่ากลัวงานเข้า !!
ดังนั้น สิ่งที่นักพัฒนา software ควรจะต้องทำก็คือ
- เขียน code ที่มีความเรียบง่าย (แต่มันไม่ง่ายเลยนะ)
- ปรับปรุงประสิทธิภาพของ code อยู่อย่างสม่ำเสมอ
- ลดจำนวน code ที่มันซ้ำซ้อนในระบบทิ้งไปซะ … แล้วหา code ส่วนนี้อย่างไรนะ !!
- คุณควรที่จะลบ code ในส่วนที่มันแปลกๆ หรือไม่ใช้งานออกไปบ้าง แต่สิ่งที่ควรจะทำไปด้วยคือ การเขียน unit test ไม่เช่นนั้น คุณจะรู้ได้อย่างไรว่า code ยังทำงานได้อย่างถูกต้อง หลังจากที่ลบ code บางส่วนออกไป
ความเรียบง่าย และ ความละเอียดในการเขียน code
มันสะท้อนถึงประสบการณ์ของนักพัฒนานะครับ
คำถามที่น่าสนใจ เกี่ยวกับการเขียน code
- ทำไมเราเขียน code ที่ไม่จำเป็นต่อการใช้งานขึ้นมาตั้งแต่แรกล่ะ ?
- ทำไมเรารู้สึกว่าต้องเขียน code พิเศษๆ ขึ้นมา เพื่อแก้ไขปัญหา ?
- เราทำการ review code และทำ pair programming กันหรือไม่ หรือ ถ้าทำเราทำ เราทำมากันอย่างไรนะ ?
คำตอบที่มักจะได้รับกลับมา
- นักพัฒนาต้องการเขียน code นั้นๆ ขึ้นมา ต้องการเขียน code เพื่อเพิ่มคุณค่าให้เกิดขึ้นในระบบ
- นักพัฒนาบางคนบอกว่า code ชุดนี้อาจจะถูกใช้งาน หรือ จำเป็นในอนาคต นั่นคือ การเผื่อไว้ก่อน นั่นคือขัดแย้งกับ YAGNI
- นักพัฒนาบางคนก็ชอบ copy code จากงานเก่าๆ มาใช้ และมักจะบอกว่านี่คือการ reuse !!
- code ชุดพิเศษที่นักพัฒนาเขียนขึ้นมานั้น มันเป็นชุดเล็กๆ ไม่ได้ซับซ้อนอะไรมาก ง่ายๆ นะ แต่เมื่อต้องทำการแก้ไข หรือ ทำการดูแลรักษา มันจะกลายเป็น code ที่ดูแลรักษา และ จัดการยากมากๆ
และถ้ามี code พิเศษชุดเล็กๆ เหล่านี้ขึ้นมาเรื่อยๆ ก็ลองคิดดูกันเอาเอง ว่าจะสนุกเพียงใด - นักพัฒนาชอบเพิ่มความสามารถต่างๆ ขึ้นมาเอง ตามความรู้สึก ประสบการณ์ โดยที่ทางลูกค้าไม่ได้ต้องการเลย หรือบางครั้งมักจะบอกว่าความสามารถส่วนนี้เราแถมให้ ซึ่งไม่ค่อยมีคุณค่าต่อผู้ใช้งานหรือลูกค้าเท่าไรนัก
ให้จำไว้ง่ายๆ ว่า
สิ่งที่คุณกำลังทำหรือสร้างอยู่ในตอนนี้คืออะไร ?
สิ่งนั้นคุณจำเป็นต้องการมันในตอนนี้หรือไม่ ?
ถ้าไม่ … ก็ลบมันทิ้งไปซะ !!!
ดังนั้น จงเรียนรู้ที่จะลบ code ด้วยนะครับ ไม่ใช่แต่เขียนหรือสร้างมันขึ้นมาอย่างเดียว