ડિપ્રિકેશન (Deprecation) ચેતવણીઓને ખોટા એલર્ટ આપતા અટકાવવી

જ્યારે PHPStan કોઈ મેથડને ડિપ્રિકેટેડ (deprecated) તરીકે ફ્લેગ કરે છે, ત્યારે તમે સામાન્ય રીતે તેના બદલે કોઈ વિકલ્પ શોધો છો. પરંતુ જો કોઈ વિકલ્પ ન હોય તો?

Shopware એ આયોજિત ફેરફારોની જાહેરાત કરવા માટે @deprecated ટેગનો ઉપયોગ કર્યો હતો—જેમ કે નવો વૈકલ્પિક પેરામીટર ઉમેરવો. સ્ટેટિક-એનાલિસિસ ટૂલ્સ આ ટેગ્સને વાસ્તવિક ડિપ્રિકેશન તરીકે ગણતા હતા અને દરેક કોલ વિશે ફરિયાદ કરતા હતા. આના કારણે ચેતવણીઓનું પ્રમાણ વધ્યું, ડેવલપર્સે ચેતવણીઓને અવગણવાનું શરૂ કર્યું, અને એલર્ટ્સનું મૂલ્ય ઘટી ગયું. આ એક ક્લાસિક "ખોટા એલર્ટ આપવાની" (crying wolf) સમસ્યા છે.

Shopware 6.7.14.0 માં અમે સિગ્નલ્સને અલગ કર્યા છે.

  • @deprecated – આનો ઉપયોગ એવા APIs માટે રાખો જે અદૃશ્ય થઈ જશે અથવા બદલાઈ જશે. તમારે તમારો કોડ માઈગ્રેટ (migrate) કરવો જ પડશે.
  • BC-change attributes – આનો ઉપયોગ આયોજિત ફેરફારો માટે કરો જે API ને કાર્યરત રાખે છે, જેમ કે નવા વૈકલ્પિક પેરામીટર્સ અથવા બદલાયેલ રિટર્ન પ્રકારો (return types).

નવા એટ્રિબ્યુટ્સ Shopware\Core\Framework\Deprecation\BCChange માં છે. તેઓ તમને ચોક્કસપણે જણાવશે કે શું બદલાશે અને કોના પર તેની અસર થશે.

અમે તેમને બે જૂથોમાં વહેંચ્યા છે:

  • CallSiteCompatibilityChange – જે મેથડને કોલ કરે છે તેવા કોડને અસર કરે છે.
  • ExtenderCompatibilityChange – જે ક્લાસ મેથડને એક્સટેન્ડ (extend) અથવા ઓવરરાઈડ (override) કરે છે તેને અસર કરે છે.

હવે તમે આગામી મેજર રિલીઝ આવે તે પહેલાં જ Shopware 6.8 માટે તમારા એક્સટેન્શનને તૈયાર કરી શકો છો.

ઉદાહરણ: એક મેથડમાં નવો વૈકલ્પિક પેરામીટર ઉમેરવામાં આવશે. આજે જ તે પેરામીટર તમારા ઓવરરાઈડ્સમાં ઉમેરી દો; આ કોડ વર્તમાન અને ભવિષ્યના બંને વર્ઝન પર ચાલશે.

આ ફેરફાર ડિપ્રિકેશન ચેતવણીઓ પરનો વિશ્વાસ પુનઃસ્થાપિત કરે છે.

ડેવલપર્સ માટે ત્રણ પગલાં

  1. @deprecated ને ફરજિયાત ફિક્સ તરીકે ગણો; API અદૃશ્ય થઈ જશે.
  2. બ્રોડ ઈગ્નોર પેટર્ન (broad ignore patterns) નો ઉપયોગ કરવાનું બંધ કરો જે વાસ્તવિક સમસ્યાઓને છુપાવી શકે છે.
  3. BC-change attributes પર ધ્યાન આપો અને પછીથી મોટા પાયે માઈગ્રેશન કરવાને બદલે અત્યારે જ નાના, સુરક્ષિત અપડેટ્સ લાગુ કરો.

સ્ત્રોત: https://dev.to/shopware/when-deprecated-cries-wolf-making-shopwares-next-major-upgrades-easier-983