หยุดปัญหาการแจ้งเตือน Deprecation ที่ทำให้ผู้พัฒนาเลิกให้ความสำคัญ (Crying Wolf)

เมื่อ PHPStan ทำเครื่องหมายว่าเมธอดหนึ่งถูก deprecate โดยปกติแล้วคุณจะต้องหาเมธอดอื่นมาแทนที่ แต่ถ้าหากไม่มีเมธอดอื่นมาแทนเลยล่ะ?

Shopware เคยใช้แท็ก @deprecated เพื่อประกาศการเปลี่ยนแปลงที่วางแผนไว้ เช่น การเพิ่มพารามิเตอร์เสริม (optional parameter) ใหม่ แต่เครื่องมือ Static-analysis กลับมองว่าแท็กเหล่านั้นเป็นการเลิกใช้งานจริง และแจ้งเตือนทุกครั้งที่มีการเรียกใช้งาน เมื่อเสียงแจ้งเตือนดังขึ้นเรื่อยๆ นักพัฒนาจึงเริ่มเพิกเฉยต่อคำเตือน และทำให้การแจ้งเตือนเหล่านั้นหมดความสำคัญไป นี่คือปัญหาแบบ "crying wolf" (การเตือนหลอกๆ จนไม่มีใครเชื่อ) ที่เกิดขึ้นบ่อยครั้ง

ใน Shopware 6.7.14.0 เราได้แยกสัญญาณเหล่านี้ออกจากกัน

  • @deprecated – สงวนไว้สำหรับ API ที่จะหายไปหรือถูกแทนที่ คุณจำเป็นต้องทำการย้าย (migrate) โค้ดของคุณ
  • BC-change attributes – ใช้สำหรับปรับแต่งตามแผนที่ยังคงรักษา API เดิมไว้ เช่น การเพิ่มพารามิเตอร์เสริมใหม่ หรือการเปลี่ยนประเภทของค่าที่ส่งกลับ (return types)

Attribute ใหม่เหล่านี้อยู่ใน Shopware\Core\Framework\Deprecation\BCChange ซึ่งจะบอกคุณอย่างชัดเจนว่าอะไรจะเปลี่ยนไปและส่งผลกระทบต่อส่วนใดบ้าง

เราแบ่งออกเป็นสองกลุ่ม:

  • CallSiteCompatibilityChange – ส่งผลกระทบต่อโค้ดที่มีการเรียกใช้งานเมธอด
  • ExtenderCompatibilityChange – ส่งผลกระทบต่อคลาสที่มีการ extend หรือ override เมธอด

ตอนนี้คุณสามารถเตรียมส่วนขยาย (extension) ของคุณให้พร้อมสำหรับ Shopware 6.8 ก่อนที่เวอร์ชันหลักถัดไปจะปล่อยออกมา

ตัวอย่าง: เมธอดหนึ่งกำลังจะมีพารามิเตอร์เสริมใหม่เพิ่มเข้ามา ให้คุณเพิ่มพารามิเตอร์นั้นในส่วนที่ทำการ override ตั้งแต่วันนี้ เพื่อให้โค้ดสามารถทำงานได้ทั้งในเวอร์ชันปัจจุบันและเวอร์ชันในอนาคต

การเปลี่ยนแปลงนี้จะช่วยฟื้นฟูความเชื่อมั่นต่อการแจ้งเตือน deprecation อีกครั้ง

สามขั้นตอนสำหรับนักพัฒนา

  1. ปฏิบัติต่อ @deprecated เสมือนเป็นการแก้ไขที่จำเป็น เพราะ API นั้นจะหายไป
  2. เลิกใช้รูปแบบการ ignore แบบกว้างๆ ที่อาจปกปิดปัญหาที่เกิดขึ้นจริง
  3. คอยสังเกต BC-change attributes และทำการอัปเดตเล็กๆ น้อยๆ ที่ปลอดภัยในตอนนี้ แทนที่จะต้องทำการย้ายระบบครั้งใหญ่ในภายหลัง

ที่มา: https://dev.to/shopware/when-deprecated-cries-wolf-making-shopwares-next-major-upgrades-easier-983