Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Adapter Pattern: Third-Party SDK'yı Kendi Interface'ine Uydurmak
Adapter, değiştiremediğin bir class'ı client'ın beklediği interface'e uydurur; C#'ta neredeyse her zaman object adapter, yani composition ile. İki hayalî ödeme SDK'sını tek IPaymentGateway'e bağlamak, callback'i TaskCompletionSource ile Task'a çevirmek, hata kodlarını domain exception'larına eşlemek ve iki adapter'ı aynı contract test ile doğrulamak.
Boundary'ler: Third-Party Kodu Sarmak ve Learning Test'ler
Ödeme SDK'sı, e-posta kütüphanesi ve cache gibi kontrol etmediğin kodu, kendi ihtiyacının şeklinde bir interface'in ve tek bir adapter'ın arkasına al; tiplerini ve exception'larını içeri sızdırma. Learning test'lerle kütüphanenin davranışını sabitle: MimeKit'in TryParse'ı "ada"yı bile geçerli sayıyor ve 4.17.0'dan 4.18.2'ye yükseltmede 13 test değişmeden geçip transitive güvenlik uyarısı kayboldu.