หยุดปัญหาการแจ้งเตือน 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 อีกครั้ง
สามขั้นตอนสำหรับนักพัฒนา
- ปฏิบัติต่อ
@deprecatedเสมือนเป็นการแก้ไขที่จำเป็น เพราะ API นั้นจะหายไป - เลิกใช้รูปแบบการ ignore แบบกว้างๆ ที่อาจปกปิดปัญหาที่เกิดขึ้นจริง
- คอยสังเกต BC-change attributes และทำการอัปเดตเล็กๆ น้อยๆ ที่ปลอดภัยในตอนนี้ แทนที่จะต้องทำการย้ายระบบครั้งใหญ่ในภายหลัง
ที่มา: https://dev.to/shopware/when-deprecated-cries-wolf-making-shopwares-next-major-upgrades-easier-983
