డిప్రికేషన్ హెచ్చరికలు అనవసరమైన అలారాలుగా మారకుండా ఆపడం

PHPStan ఒక మెథడ్‌ను డిప్రికేటెడ్ (deprecated) అని గుర్తించినప్పుడు, మీరు సాధారణంగా దానికి బదులుగా మరొక దాని కోసం వెతుకుతారు. కానీ, దానికి బదులుగా ఏదీ లేకపోతే పరిస్థితి ఏమిటి?

Shopware కొత్త ఆప్షనల్ పారామీటర్‌ను జోడించడం వంటి ప్రణాళికాబద్ధమైన మార్పులను ప్రకటించడానికి @deprecated ట్యాగ్‌ను ఉపయోగించేది. స్టాటిక్-అనాలిసిస్ టూల్స్ ఆ ట్యాగ్‌లను నిజమైన డిప్రికేషన్లుగా పరిగణించి, ప్రతి కాల్ (call) గురించి ఫిర్యాదు చేసేవి. దీనివల్ల అనవసరమైన శబ్దాలు (noise) పెరిగిపోయాయి, డెవలపర్లు హెచ్చరికలను విస్మరించడం ప్రారంభించారు మరియు ఆ అలర్ట్‌ల విలువ తగ్గిపోయింది. ఇది సరిగ్గా "అనవసరమైన హెచ్చరికలు ఇవ్వడం" (crying wolf) వంటి పరిస్థితి.

Shopware 6.7.14.0లో మేము ఈ సిగ్నల్స్‌ను వేరు చేశాము.

  • @deprecated – ఇది పూర్తిగా తొలగించబడే లేదా భర్తీ చేయబడే APIల కోసం మాత్రమే ఉపయోగించండి. మీరు తప్పనిసరిగా మీ కోడ్‌ను మైగ్రేట్ చేయాలి.
  • BC-change attributes – APIని అలాగే ఉంచుతూ చేసే ప్రణాళికాబద్ధమైన మార్పుల కోసం (ఉదాహరణకు కొత్త ఆప్షనల్ పారామీటర్లు లేదా మారిన రిటర్న్ టైప్స్) వీటిని ఉపయోగించండి.

కొత్త అట్రిబ్యూట్‌లు Shopware\Core\Framework\Deprecation\BCChange లో ఉంటాయి. ఏది మారుతుంది మరియు అది ఎవరిని ప్రభావితం చేస్తుంది అనే విషయాన్ని ఇవి ఖచ్చితంగా తెలియజేస్తాయి.

మేము వాటిని రెండు గ్రూపులుగా విభజించాము:

  • CallSiteCompatibilityChange – ఒక మెథడ్‌ను కాల్ చేసే కోడ్‌ను ప్రభావితం చేస్తుంది.
  • ExtenderCompatibilityChange – ఒక మెథడ్‌ను ఎక్స్‌టెండ్ (extend) చేసే లేదా ఓవర్‌రైడ్ (override) చేసే క్లాస్‌లను ప్రభావితం చేస్తుంది.

ఇప్పుడు తదుపరి మేజర్ రిలీజ్ రాకముందే, మీరు మీ ఎక్స్‌టెన్షన్‌ను Shopware 6.8 కోసం సిద్ధం చేసుకోవచ్చు.

ఉదాహరణ: ఒక మెథడ్‌కు కొత్త ఆప్షనల్ పారామీటర్ వస్తుంది. ఆ పారామీటర్‌ను ఈరోజే మీ ఓవర్‌రైడ్స్‌లో జోడించండి; దీనివల్ల కోడ్ ప్రస్తుత మరియు భవిష్యత్తు వెర్షన్లు రెండింటిలోనూ పనిచేస్తుంది.

ఈ మార్పు డిప్రికేషన్ హెచ్చరికలపై నమ్మకాన్ని తిరిగి కలిగిస్తుంది.

డెవలపర్‌ల కోసం మూడు దశలు

  1. @deprecatedను తప్పనిసరిగా చేయాల్సిన ఫిక్స్‌గా పరిగణించండి; ఆ API తొలగించబడుతుంది.
  2. నిజమైన సమస్యలను దాచిపెట్టే అవకాశం ఉన్న బ్రాడ్ ఇగ్నోర్ ప్యాటర్న్స్‌ను (broad ignore patterns) తొలగించండి.
  3. BC-change అట్రిబ్యూట్‌లను గమనిస్తూ ఉండండి మరియు భవిష్యత్తులో భారీ మైగ్రేషన్ చేయడం కంటే, ఇప్పుడు చిన్న చిన్న, సురక్షితమైన అప్‌డేట్‌లను అప్లై చేయండి.

Source: https://dev.to/shopware/when-deprecated-cries-wolf-making-shopwares-next-major-upgrades-easier-983