Hocam basit bir event parser için neden 4 farklı class var?
Bana neden public olarak parseEventNotification metodu veriliyor ama related_object propertysine erişim izni verilmiyor. protected tanımlanıyor.
Aynısını yapmak için neden event handler kullanmak zorundayım. öyleyse neden parseEvent var.
Zor yanı yok değil baya baya saçma bu.
Stripe burada event’in kendisini değil, event notification’ı parse ediyor. Stripe v2 “thin event” kullanıyor; yani related_object doğrudan nesnenin kendisi değil, ilgili Stripe kaynağına referans.
Bu yüzden mimari kabaca:
parseEventNotification() → notification’ı parse eder
related_object → resource referansı
fetchRelatedObject() / handler → gerçek objeyi API’den getirir
EventNotificationHandler → event’i doğru callback’e yönlendirir
Dolayısıyla parseEventNotification() neden var? Çünkü görevi parse + notification üretmek; “ilgili objeyi bana ver” görevi değil.
Eleştirilebilecek taraf ise API ergonomisi: Kullanıcı parseEventNotification() çağırınca doğal olarak related_object’e erişip işi bitirmek istiyor. Bunun yerine protected alan + handler + ayrı fetch katmanı koymaları gereksiz karmaşıklık hissi yaratıyor.
Yani mimari teknik olarak savunulabilir, fakat kullanım API’si gereğinden fazla karmaşık. Kısaca, sizin dediğiniz alanda değil, farklı alanlarda karmaşıklıklar var. Bunların da belli nedenleri var. Oturup inceledikçe hak veriyorsunuz. Stripe 3 günlük bir şirket değil ki 3 günlük düşünce ile 15 yıllık mantığın neden bu hale geldiğini sorgulayalım. Derinlemesine incelerseniz, hak verirsiniz.