โคดในตำนาน

เมื่อวานได้ช่วยน้องดู Issue อันนึงซึ่งเกี่ยวกับการ Drag & Drop ซึ่งเจอประเด็นน่าใจ

ในวงการ .NET เนี่ย จะมี code ในตำนานอยู่ชุดนึงที่มีคนก๊อบปี้ไปใช้กันมากมาย ซึ่งเป็น code เกี่ยวกับการ drag & drop ไฟล์จาก Microsoft Outlook ซึ่งจะช่วยอำนวยความสะดวกเวลาเราลากไฟล์(หรืออีเมล)จากที่อื่นๆเข้ามาใน application ของเรา ซึ่งการลากจาก MS Outlook จะทำงานไม่เหมือนการลากวางจากที่อื่น ไม่ว่าจะ search ยังไงก็จะวนเวียนมาเจอโคดหน้าตาแบบนี้ล่ะ

คราวนี้เนี่ยโคดที่ก๊อบๆกันไปมันเป็นโคดที่ค่อนข้าง low level มาก ชนิดที่ว่าคนที่ถนัด .NET กว่าครึ่งไม่น่าจะเข้าใจว่าโคดมันทำงานยังไงกันแน่ เพราะมันมีการใช้งานโคดของ Windows เองที่มีพื้นฐานมาจากภาษา C++ คนรู้แค่ว่าก๊อบไปแล้วมันก็ดูเวิร์คนะ ทำงานได้ถูก

ปัญหาก็คือโคดชุดที่ว่าเนี่ย ถูกเผยแพร่ครั้งแรกบนเว็บ codeproject.com เมื่อปี 2008 !!… คนก็ก๊อบๆปใช้กันมากมาย ทั้งๆที่มันมีบัคอยู่ !!

ถ้าเรามานั่งอ่านดีๆจะพบว่า มีคนมา comment ตามหลังอีกสองสามอัน (ในปี 2010) ในเรื่องปัญหากับการทำงานใน 64 bit และปัญหาการจัดการ memory เมื่อลากมาจากบาง app

ในเคสของ Issue ที่เกิดกับตัวเองก็พบว่าใน MS Outlook release ล่าสุด (April 2020, Version 2004 (Build 12730.20250) ) จะมีปัญหาซึ่ง code ที่แก้เรื่องการจัดการ memory ก็แก้ปัญหานี้ด้วยเช่นกัน

สรุปก็คือ code drag & drop จาก MS Outlook ที่มีอายุ มากกว่า 12 ปีนั้นมีบัคอยู่ และมันถูกส่งต่อๆกันไปแบบมีบัคเยอะมาก โดยไม่ได้มีใครเข้าใจมันเท่าไหร่ เลยไม่มีใครดูออกว่ามันมีบัคอยู่ จนเมื่อถึงเวลามันระเบิดนั่นแหล่ะถึงจะต้องมารื้อดูกัน และมีแนวโน้มว่า หลังจากนี้จะมีหลายแอพที่เริ่มพังเพราะ code ที่มีบัคนั้นทำงานไม่ได้กับเวอร์ชันล่าสุดของ MS Outlook

การ copy & paste ก็ไม่ใช่เรื่องง่ายๆอีกต่อไป

ปัจจุบันการใช้ opensource code ผ่านทาง Github และการใช้งานผ่าน Nuget/npm ค่อนข้างได้รับความนิยม การบริหารจัดการก็ดีขึ้นมาก ดีกว่า codeproject ที่เป็น webboard style ปัญหาเหล่านี้น่าจะลดน้อยลงไปได้

ข้อมูลเพิ่มเติมสำหรับผู้สนใจ

Scroll to top