Tag Archives: Legacy Code

Legacy code กับ third-party library

ใน Blog นี้ผมของนิยาม Legacy code ว่า code ที่เราไม่อยากและไม่สนุกที่จะไปแก้ ละกันนะครับ

เราไม่ชอบ Legacy code เพราะถ้าไปแก้ที แล้วต้อง หา regression bug ใหม่หมด เราอยากปล่อยระบบของเราที่มันนิ่งและทำงานได้ดีแล้วอยู่อย่างนั้น

อีกสาเหตุนึงที่ทำให้เราไม่ชอบคือ มันใช้วิธีเก่าๆ ภาษาเก่าๆ framework เก่าๆ ในการแก้ปัญหา บางครั้งมันก็ยาก ลำบาก และเสียเวลากว่าเทคโนโลยีที่มีอยู่ในปัจจุบัน

ส่วนหนึ่งที่เกิดเหตุการแบบนี้ขึ้น เพราะเรา lock version ของภาษาที่ใช้เขียนและ version ของ third-party library ไว้ ไม่ update ตาม version ปัจจุบัน เพราะเราคิดว่าส่วนใหญ่พวก update version มักจะทำให้เกิด bug เสมอๆ

แต่ผมกลับคิดว่าการกระทำอย่างงี้ก็เป็นการสร้าง legacy code เพิ่มความไม่อยากแตะต้อง code ชุดน้ันขึ้นทุกวันๆ

ถ้าเป็นระบบที่เราพัฒนาส่งมอบลูกค้าแล้วๆกัน fix version ก็โอเคนะครับ

แต่ถ้าเราพัฒนาระบบที่เป็น product ของเราเอง ที่เราจะอยู่บน code base นี้ไปตลอด ผมว่าเราควรอัพเดตบ่อยๆ อาจจะไม่ต้องวันที่ library ออกก็ได้ ทิ้งระยะห่างซักประมาณครั้งละ 1 minor version ตามหลัง เพราะพวก library บางที update version แล้ว ชอบมี hotfix ตามมา แต่ไม่ควรทิ้งไว้นานมาก ยิ่งนานเท่าไหร่ cost ในการ update ยิ่งสูงขึ้นไปเท่านั้น

แน่นอน update บ่อยๆ โดยที่ไม่มี automate functional regression test suite เป็นไปไม่ได้ครับ