reduce-waste
อ่านบทความเรื่อง Honest Code ซึ่งเขียนมาตั้งแต่ปี 2005
มีใจความสำคัญว่า
Code ส่วนไหนที่ไม่ถูกเรียกใช้งานจากส่วนอื่นก็ควรลบทิ้งไปซะ
Code ส่วนไหนที่ไม่ถูกใช้งานจากผู้ใช้งานก็ควรลบทิ้งไปซะ
ให้เหลือ code ที่จำเป็นเท่านั้นจริง ๆ
จะได้ไม่ต้องมาเสียเวลากับ code ที่ไม่ใช้งาน

ดังนั้นจึงนำมาแปลและสรุป ตลอดจนหาข้อมูลเพิ่มเติมบ้าง

เริ่มจากเรื่องราวที่ developer หลาย ๆ คนน่าจะเคยพบมา

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

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

โดยในบทความอธิบายว่าในการพัฒนา software มีอยู่ 2 กลุ่มคือ

  1. กลุ่มที่เขียนแต่พวก framework และ library ซึ่งไม่เคยรู้เลยว่าหรือไม่สนใจเลยว่า จะมีใครมาใช้งาน code หรือไม่ !!
  2. กลุ่มที่เขียน Application code แน่นอนว่า code ที่เขียนคือ code ที่ถูกใช้งานอย่างแน่นอน

คำถามคือ เราอยู่ในกลุ่มไหน ?

ดังนั้นจงหัดลบ code เหล่านี้ทิ้งไปบ้างนะ

แต่ … ไม่กล้าลบนะสิ เพราะว่า กลัว !!
เดี๋ยวงานจะเข้า

ถ้าต้องการลบ code เราต้องการวิธีที่ทำให้มั่นใจสินะ !!

สิ่งแรกที่เราต้องการรู้ก็คือ dead code
หรือ code ที่ไม่ถูกเรียกใช้งานจาก code ส่วนอื่นเลยจริง ๆ
ซึ่งมีเครื่องมือในการตรวจสอบมากมาย
ดังนั้นจึงไม่ใช้ประเด็นสักเท่าไร

สิ่งที่หนักกว่านั้นคือ code ถูกเรียกใช้งานจาก code ส่วนอื่น
แต่ไม่ถูกเรียกใช้งานจากผู้ใช้งาน
พูดง่าย ๆ คือเป็น feature ที่ไม่มีใครใช้งานนั่นเอง
คุ้น ๆ ไหมนะ ?

ดังนั้นสิ่งที่เราต้องการคือ code บน production ถูกใช้งานหรือไม่ ?

หรือเราเรียกว่า coverage in production
จะไปเขียน test case คงไม่ใช่ที่
แต่สิ่งที่ต้องทำก็คือ ต้องเพิ่ม logging หรือ analytic tool
เพื่อทำให้เรารู้ว่า code ส่วนไหนไม่ถูกใช้งานจากผู้ใช้งานจริง ๆ
แน่นอนว่าต้องเกิด overhead ขึ้นมาพอสมควร
แต่การลงทุนย่อมต้องมีความเสี่ยงเสมอ

แต่ถ้าต้องการลด overhead ต่าง ๆ ลงไป
ก็ให้เก็บข้อมูลเฉพาะส่วนที่ต้องการ
หรือส่วนที่น่าสงสัยก็น่าจะเพียงพอ

จากนั้นทำการสรุปและวิเคราะห์จากผลการทำงาน
เพื่อทำการลบ code ที่ไม่จำเป็นทิ้งไปเสียบ้าง
แล้วมันจะทำให้คุณเสียเวลาน้อยลงไป

วันนี้ developer หัดลบ code ที่ไม่ใช้งานออกไปบ้างหรือยัง ?

Reference Websites
https://michaelfeathers.silvrback.com/to-kill-code
http://www.miqu.me/blog/2016/08/16/knowing-when-to-delete-code/