Deprecation Uyarılarının "Yalancı Çobanlık" Yapmasını Engellemek

PHPStan bir metodu deprecated olarak işaretlediğinde, normalde bir alternatif ararsınız. Peki ya hiç alternatif yoksa?

Shopware, yeni bir isteğe bağlı parametre eklemek gibi planlanan değişiklikleri duyurmak için @deprecated etiketini kullanıyordu. Statik analiz araçları bu etiketleri gerçek kullanımdan kaldırmalar olarak değerlendiriyor ve her çağrı için uyarı veriyordu. Gürültü arttıkça geliştiriciler uyarıları görmezden gelmeye başladı ve uyarılar değerini yitirdi. Bu, klasik bir "yalancı çoban" durumuydu.

Shopware 6.7.14.0 sürümünde sinyalleri ayırdık.

  • @deprecated – bunu yok olacak veya değiştirilecek API'ler için ayırın. Kodunuzu taşımanız (migrate etmeniz) gerekir.
  • BC-change öznitelikleri (attributes) – bunları, yeni isteğe bağlı parametreler veya değiştirilmiş dönüş türleri gibi API'yi canlı tutan planlanmış küçük düzenlemeler için kullanın.

Yeni öznitelikler Shopware\Core\Framework\Deprecation\BCChange içinde yer alıyor. Bunlar size tam olarak neyin değişeceğini ve kimleri etkileyeceğini söyler.

Bunları iki gruba ayırdık:

  • CallSiteCompatibilityChange – bir metodu çağıran kodu etkiler.
  • ExtenderCompatibilityChange – bir metodu genişleten (extend) veya geçersiz kılan (override) sınıfları etkiler.

Artık bir sonraki büyük sürüm yayınlanmadan önce eklentinizi Shopware 6.8 için hazırlayabilirsiniz.

Örnek: bir metot yeni bir isteğe bağlı parametre kazanacak. Bu parametreyi bugün override'larınıza ekleyin; kod hem mevcut hem de gelecekteki sürümlerde çalışacaktır.

Bu değişiklik, deprecation uyarılarına olan güveni yeniden tesis ediyor.

Geliştiriciler için üç adım

  1. @deprecated etiketini zorunlu bir düzeltme olarak görün; API yok olacak.
  2. Gerçek sorunları gizleyebilecek geniş kapsamlı yoksayma (ignore) kalıplarından vazgeçin.
  3. BC-change özniteliklerini takip edin ve daha sonra büyük bir taşıma işlemi yapmak yerine şimdi küçük, güvenli güncellemeler uygulayın.

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