ڈیپریکیشن وارننگز (Deprecation Warnings) کو بے مقصد الرٹس دینے سے روکنا
جب PHPStan کسی میتھڈ (method) کو ڈیپریکٹڈ (deprecated) کے طور پر نشان زد کرتا ہے، تو آپ عام طور پر اس کے متبادل کی تلاش کرتے ہیں۔ لیکن کیا ہو اگر کوئی متبادل موجود ہی نہ ہو؟
Shopware نے منصوبہ بند تبدیلیوں کے اعلان کے لیے @deprecated ٹیگ کا استعمال کیا تھا—جیسے کہ ایک نیا اختیاری پیرامیٹر (optional parameter) شامل کرنا۔ اسٹیٹک اینالیسس ٹولز (Static-analysis tools) نے ان ٹیگز کو حقیقی ڈیپریکیشن سمجھا اور ہر کال (call) پر شکایت کرنے لگے۔ شور بڑھتا گیا، ڈویلپرز نے وارننگز کو نظر انداز کرنا شروع کر دیا، اور الرٹس اپنی اہمیت کھو بیٹھے۔ یہ وہی کلاسک "جھوٹی وارننگ" (crying wolf) والی صورتحال ہے۔
Shopware 6.7.14.0 میں ہم نے سگنلز کو الگ کر دیا ہے۔
@deprecated– اسے ان APIs کے لیے مخصوص رکھیں جو ختم ہو جائیں گی یا جنہیں تبدیل کر دیا جائے گا۔ آپ کو اپنا کوڈ مائیگریٹ (migrate) کرنا ہوگا۔- BC-change attributes – انہیں ان منصوبہ بند تبدیلیوں (tweaks) کے لیے استعمال کریں جو API کو برقرار رکھتی ہیں، جیسے کہ نئے اختیاری پیرامیٹرز یا تبدیل شدہ ریٹرن ٹائپس (return types)۔
نئے ایٹریبیوٹس (attributes) Shopware\Core\Framework\Deprecation\BCChange میں موجود ہیں۔ وہ آپ کو بالکل صحیح بتاتے ہیں کہ کیا تبدیل ہوگا اور اس کا اثر کس پر پڑے گا۔
ہم نے انہیں دو گروہوں میں تقسیم کیا ہے:
- CallSiteCompatibilityChange – اس کوڈ کو متاثر کرتا ہے جو کسی میتھڈ کو کال کرتا ہے۔
- ExtenderCompatibilityChange – ان کلاسز کو متاثر کرتا ہے جو کسی میتھڈ کو ایکسٹینڈ (extend) یا اوور رائڈ (override) کرتی ہیں۔
اب آپ اگلی بڑی ریلیز آنے سے پہلے ہی اپنی ایکسٹینشن کو Shopware 6.8 کے لیے تیار کر سکتے ہیں۔
مثال: ایک میتھڈ میں نیا اختیاری پیرامیٹر شامل کیا جائے گا۔ آج ہی اس پیرامیٹر کو اپنے اوور رائڈز (overrides) میں شامل کر لیں؛ اس طرح کوڈ موجودہ اور مستقبل کے دونوں ورژنز پر چلے گا۔
یہ تبدیلی ڈیپریکیشن وارننگز پر اعتماد بحال کرتی ہے۔
ڈویلپرز کے لیے تین اقدامات
@deprecatedکو ایک لازمی اصلاح (mandatory fix) کے طور پر لیں؛ یہ API ختم ہو جائے گی۔- ان وسیع 'ignore patterns' کو ختم کریں جو حقیقی مسائل کو چھپا سکتے ہیں۔
- BC-change attributes پر نظر رکھیں اور بعد میں بڑی مائیگریشن کے بجائے ابھی چھوٹے اور محفوظ اپ ڈیٹس لاگو کریں۔
Source: https://dev.to/shopware/when-deprecated-cries-wolf-making-shopwares-next-major-upgrades-easier-983
