โค้ดที่มีเส้นขีดกลาง เค้าเรียกว่า Deprecated Code

เคยกันมั้ยเอ่ย? นั่งพิมพ์โค้ดอยู่ดีๆแล้วก็พบว่ามีโค้ดบางตัวมีขีดเส้นคั่นกลางอยู่? นั่นล่ะครับที่เค้าเรียกว่า Deprecated Code

คำถามนี้พบได้บ่อยมากกับนักพัฒนามือใหม่ ซึ่งสงสัยว่าเจอโค้ดแบบนี้แล้วมันคืออะไร? ควรทำอย่างไร? ถ้าใช้ต่อไปจะมีปัญหามั้ย?

Deprecated Code ก็คือโค้ดเก่าที่เค้าเลิกใช้กันแล้ว

ลองนึกภาพว่าผู้ที่หลงเข้ามาอ่านพัฒนา API ชุดหนึ่งให้คนอื่นๆใช้ แล้ววันหนึ่งก็ได้พัฒนาโค้ดชุดใหม่มาแทนที่ของเก่าขึ้นมา อาจจะเพราะโค้ดชุดเก่ามีปัญหาเล็กน้อยเวลาใช้งานจริง ผู้ที่หลงเข้ามาอ่านจะทำยังไงดีกับโค้ดชุดเก่า

"ลบโค้ดชุดเก่าทิ้ง” หรือ “ประกาศว่าโค้ดชุดเก่าเลิกใช้แล้ว

ถ้าเลือก “ลบโค้ดชุดเก่าทิ้ง” เวลาที่นักพัฒนาคนอื่นๆที่ใช้ API ตัวนี้อยู่ แล้วไปกดอัปเดต API ให้เป็นเวอร์ชันล่าสุด เค้าก็จะพบว่าโค้ดงานของเค้าเกิด Error ขึ้นบานเบอะ ทั้งนี้ก็เพราะว่าผู้ที่หลงเข้ามาอ่านได้ลบโค้ดชุดเก่าทิ้งออกไปหมดจาก API

โดนด่าสิครับ….

ดังนั้นการประกาศว่าโค้ดชุดเก่าเลิกใช้แล้วจึงเป็นทางเลือกที่ดีกว่า เพราะถึงแม้ว่าโค้ดจะเก่าแล้ว แต่มันก็ยังคงทำงานได้ปกติ ไม่ส่งผลกระทบกับนักพัฒนาคนอื่นๆมากนัก

จึงเป็นที่มาว่าทำไมถึงต้องมี Deprecated Code

มีทั้ง Deprecated Class และ Deprecated Method

โค้ดเก่าที่เลิกใช้แล้วไม่ได้จำเป็นต้องเก่าทั้งชุดคำสั่งหรือทั้ง Class แต่ในบางครั้งก็จะใช้วิธี Deprecated เฉพาะ Method บางตัวเท่านั้น

เจอ Deprecated Code แล้วจะต้องทำยังไง?

ทีนี้กลับมาในมุมมองของนักพัฒนาที่เอา API ไปใช้งานกันบ้างดีกว่า

เมื่อพัฒนาแอปซักตัวอยู่แล้วพบว่ามี Deprecated Code โผล่ขึ้นมาในโค้ด ผู้ที่หลงเข้ามาอ่านส่วนใหญ่ก็จะยังคงใช้งานมันอยู่ เพราะว่ามันยังคงทำงานได้ปกติ

แต่สำหรับเจ้าของบล็อก ควรเลิกใช้งานแล้วเปลี่ยนไปใช้โค้ดใหม่แทน ทั้งนี้ก็เพราะว่าโค้ดเก่าๆไม่ได้อยากจะเปลี่ยนใหม่เพียงเพราะว่าอยากเปลี่ยนนะ แต่อาจจะเพราะว่า

  • มีบั๊กบางอย่างในของเก่าที่ไม่สามารถแก้ไขได้
  • มีคำสั่งที่ดีกว่าที่ไม่สามารถเพิ่มเข้าไปได้ในโค้ดชุดเก่า

จึงเป็นที่มาว่าทำไมถึงควรอัปเดตโค้ดเหล่านั้นใหม่ซะ

จะรู้ได้ไงว่าต้องใช้โค้ดแบบไหนแทนของเก่า?

ถ้าพูดง่ายๆก็คือ “ลองเอาไปค้นหาดู เดี๋ยวก็เจอ” แต่เจ้าของบล็อกก็จะมีวิธีง่ายๆในการค้นหาข้อมูลดังนี้

วิธีแรกสุด

บน Android Studio จะมีการแจ้งเบื้องต้นให้อยู่แล้วว่าโค้ดนั้นๆ Deprecated เมื่อเอาเม้าส์ไปชี้ที่ตรงโค้ดนั้นๆก็จะมีการแสดงคำอธิบายของโค้ดตัวนั้นให้อยู่พอสมควร อย่างเช่น ActionBarActivity ก็จะมีการบอกว่าให้ใช้ AppCompatActivity แทนสิ

วิธีที่สอง

เข้าไปดู Reference ของโค้ดนั้นๆใน Android Developer เพราะในนี้จะมีการแนะนำวิธิที่ดีกว่าให้เรียบร้อยแล้ว (ซึ่งผู้ที่หลงเข้ามาอ่านบางคนไม่เคยเปิดเข้าไปดูเลย)

วิธีที่สาม

ค้นหาว่า <code_keyword> deprecated ใน Google เดี๋ยวก็เจอ อย่างน้อยก็เจอใน Stackoverflow นั่นแหละน่า

บางครั้งก็ Deprecated บนแอนดรอยด์เวอร์ชันใหม่ๆ

อาจจะฟังดูวุ่นวายไปหน่อย แต่ในบางครั้งโค้ดบางตัวก็ไม่ได้ให้เลิกใช้โดยสิ้นเชิง เพียงแต่ว่าในเวอร์ชันใหม่กว่าจะมีคำสั่งใหม่มาแทนที่ แต่ทว่าคำสั่งใหม่นั้นก็ไม่ได้รองรับกับเวอร์ชันเก่าๆ

จึงทำให้ผู้ที่หลงเข้ามาอ่านต้องแยกคำสั่งตามแอนดรอยด์เวอร์ชันแทน โดยจะต้องดูว่าคำสั่งใหม่ที่ว่ามาในเวอร์ชันอะไร ไม่ใช่แค่ดูว่ามัน Deprecated เวอร์ชันไหนนะ

สรุป

Deprecated Code เป็นแค่โค้ดที่ถูกประกาศเลิกใช้งาน อาจจะเพราะมีปัญหาบางอย่างหรือมีคำสั่งใหม่ที่ดีกว่า แต่ Deprecated Code ก็เป็นการแสดงผลในรูปแบบของ Warning ที่แค่แจ้งเตือนให้นักพัฒนารู้ แต่ไม่ถึงกับบังคับว่าต้องเปลี่ยนโค้ดทันที โดยที่นักพัฒนาจะยังคงสามารถใช้โค้ดชุดเก่าได้อยู่

แต่ถ้าเป็นไปได้ เวลาเจอ Deprecated Code เจ้าของบล็อกก็แนะนำให้แก้ไขมันดีกว่านะ เพื่อที่ว่าจะได้อุดปัญหาบางอย่างหรือรองรับการทำงานใหม่ๆอยู่เสมอ หรือดีไม่ดีก็จะพบว่าคำสั่งที่มาแทนที่นั้นใช้งานได้ง่ายกว่านะเออ