คำถามที่น่าสนใจสำหรับนักพัฒนา

code ของระบบงานมี dead code หรือไม่ ?

คำตอบอาจจะมีหลากหลายเช่น
ไม่มีแน่นอน
น่าจะมี
ไม่มี
หรือ dead code มันคืออะไร ?

ก่อนอื่นมาทำความเข้าใจกับ dead code กันหน่อย

Code ที่ถูก execute หรือเรียกใช้งาน
แต่ไม่ได้ส่งผลอะไรเลย
หรือผลลัพธ์ที่ได้ ไม่ถูกนำไปใช้งาน

ปล.
Code ที่ไม่ถูก execute หรือไม่เรียกใช้งานเราเรียกว่า unreachable code

ดังนั้น code เหล่านี้จึงเป็น overhead ของการทำงาน
รวมทั้งการใช้งาน resource เช่น CPU และ Memory อีกด้วย
แน่นอนว่า เวลา มันคือค่าใช้จ่ายที่ต้องเสียไป
ดังนั้นลดมันลงซะ

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

ดังนั้นนักพัฒนามาหัดลบ code กันนะ
มาเริ่มกันเลย

ลบ code ที่ถูก comment ออกไปซะ

ใช้ version control แล้ว จะเก็บ code เหล่านี้ไว้ทำไม
ทำไว้เพื่อดูว่า เคยทำอะไรมาบ้าง
ทำไว้เพื่อเผื่อจะเอากลับมาใช้
ทำไว้เพื่อทดสอบบางสิ่งบางอย่าง แล้วลืมเอาออก

ปล. นักพัฒนาบางคนอาจจะบอกว่า เก็บไว้ก่อนนะ !!
บอกเลยว่า ลบเถอะ ไม่งั้นผมจะลบให้นะ

ลบพวก Unreachable code ทิ้งซะ

ลบเถอะนะ
ที่สำคัญบางภาษามีการเตือน บางภาษาถึงกับ compile ไม่ผ่าน
หรือนำเครื่องมือพวก lint หรือ Static code analysis มาใช้นะ

พวก Variable, Field และ Parameter ที่ไม่ใช้งานก็ลบเถอะนะ

ประกาศเท่าที่ใช้ก็พอ อย่าเผื่อ
แน่นอนว่า IDE ต่าง ๆ มีการเตือนเสมอนะ
แก้ซะ นั่นคือ ลบซะ
เนื่องจากการแก้ไขผ่าน IDE จะปลอดภัยมาก ๆ

พวก method ต่าง ๆ ก็เช่นกัน ถ้าไม่ใช้ก็ลบไป

บ่อยครั้งเจอกับ method ที่ไม่ใช public method เช่น private method

รวมไปถึง scope ของ class, method, variable ด้วย
กำหนดให้ตรงกับที่ใช้
ไม่ใช่ว่า กำหนดให้เป็น public ทั้งหมด
ดังนั้นให้ดูขอบเขตหรือscope ของการใช้งานด้วย เช่น private, protected และ public

สุดท้ายแล้ว

นักพัฒนาต้องให้ความสำคัญต่อการเขียน code ด้วย
ทั้งลดความซับซ้อน
ทั้งการจัดโครงสร้างที่ดี
ทั้งการตรวจสอบ code ว่ามี dead code หรือไม่
เพื่อทำการแก้ไขทันที อย่าบอกว่า เดี๋ยวก่อน ( Later === Never )

เขียน code ก็ยากแล้ว
ดูแลรักษา code ยิ่งยากกว่า
ดังนั้นลด code ที่ไม่จำเป็นออกไปเถอะนะ

ขอให้สนุกกับการ coding ครับ

Reference Websites
https://dzone.com/articles/you-have-no-excuse-for-your-dead-code
https://blog.ndepend.com/paying-for-dead-code/
https://blog.ndepend.com/alternatives-lines-of-code-loc/