24 August 2015

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

Updated on


        เคยกันมั้ยเอ่ย? นั่งพิมพ์โค๊ดอยู่ดีๆแล้วก็พบว่ามีโค๊ดบางตัวมีขีดเส้นคั่นกลางอยู่? นั่นล่ะครับที่เค้าเรียกว่า 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> deprecated" ใน Google เดี๋ยวก็เจอ อย่างน้อยก็เจอใน Stackoverflow นั่นแหละน่า


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

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


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


สรุป 

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

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