Deprecation Warnings-এর মিথ্যা সতর্কতা বন্ধ করা
যখন PHPStan কোনো মেথডকে deprecated হিসেবে চিহ্নিত করে, আপনি সাধারণত একটি বিকল্প খোঁজার চেষ্টা করেন। কিন্তু যদি কোনো বিকল্প না থাকে?
Shopware পরিকল্পিত পরিবর্তনগুলো ঘোষণা করতে @deprecated ট্যাগ ব্যবহার করত—যেমন একটি নতুন optional parameter যোগ করা। Static-analysis টুলগুলো সেই ট্যাগগুলোকে প্রকৃত deprecation হিসেবে গণ্য করত এবং প্রতিটি কলের ক্ষেত্রে সতর্কতা দিত। এর ফলে সতর্কবার্তার সংখ্যা বাড়তে থাকে, ডেভেলপাররা সতর্কতাগুলো উপেক্ষা করতে শুরু করেন এবং অ্যালার্টগুলোর গুরুত্ব হারিয়ে যায়। এটিই হলো ক্লাসিক "crying wolf" বা মিথ্যা সতর্কতার পরিস্থিতি।
Shopware 6.7.14.0-এ আমরা এই সংকেতগুলোকে (signals) আলাদা করেছি।
@deprecated– এটি সেইসব API-এর জন্য রাখুন যা হারিয়ে যাবে বা প্রতিস্থাপিত হবে। আপনাকে অবশ্যই আপনার কোড মাইগ্রেট করতে হবে।- BC-change attributes – এগুলো সেইসব পরিকল্পিত পরিবর্তনের জন্য ব্যবহার করুন যা API-কে সচল রাখে, যেমন নতুন optional parameters বা পরিবর্তিত return types।
নতুন attribute-গুলো Shopware\Core\Framework\Deprecation\BCChange-এ রয়েছে। এগুলো আপনাকে স্পষ্টভাবে বলে দেবে কী পরিবর্তন হবে এবং এটি কাদের প্রভাবিত করবে।
আমরা এদের দুটি গ্রুপে ভাগ করেছি:
- CallSiteCompatibilityChange – এটি সেই কোডকে প্রভাবিত করে যা একটি মেথড কল করে।
- ExtenderCompatibilityChange – এটি সেই ক্লাসগুলোকে প্রভাবিত করে যা একটি মেথডকে extend বা override করে।
এখন আপনি পরবর্তী major release আসার আগেই আপনার extension-টিকে Shopware 6.8-এর জন্য প্রস্তুত করতে পারেন।
উদাহরণ: একটি মেথডে একটি নতুন optional parameter যোগ করা হবে। আজই আপনার overrides-এ সেই parameter-টি যোগ করে রাখুন; এতে কোডটি বর্তমান এবং ভবিষ্যৎ উভয় ভার্সনেই চলবে।
এই পরিবর্তনটি deprecation warnings-এর প্রতি আস্থা ফিরিয়ে আনবে।
ডেভেলপারদের জন্য তিনটি ধাপ
@deprecated-কে একটি বাধ্যতামূলক ফিক্স (mandatory fix) হিসেবে বিবেচনা করুন; কারণ API-টি হারিয়ে যাবে।- বড় পরিসরের ignore pattern ব্যবহার করা বন্ধ করুন যা প্রকৃত সমস্যাগুলোকে আড়াল করতে পারে।
- BC-change attributes-এর দিকে নজর রাখুন এবং পরবর্তীতে বড় ধরনের মাইগ্রেশনের পরিবর্তে এখন থেকেই ছোট ও নিরাপদ আপডেট প্রয়োগ করুন।
উৎস: https://dev.to/shopware/when-deprecated-cries-wolf-making-shopwares-next-major-upgrades-easier-983
