Video, yapay zekâya yazdırılmış tipik bir ödeme işleviyle açılıyor: Stripe bağlantısı alınıyor, müşteri bulunuyor veya yaratılıyor, ödeme niyeti kuruluyor, hatalara göre dallanılıyor. Kod tek başına çalışıyor; sorun, bu Stripe bilgisinin ödeme gereken her yere kopyalanmasıyla başlıyor. Servis değişirse veya sürüm yükselirse, fatura kabarık bir yeniden yazım olarak dönüyor.
Temel teşhis bağımlılık kavramıyla konuyor: sipariş işleyen kod, Stripe müşterilerinin, ödeme niyetlerinin, üstveri uzlaşımlarının, onay çağrılarının ve hata sınıflarının tamamını bilmek zorunda kalıyor. Sistemin ödeme ile ilgili her parçası, dış servisin iç dünyasını ezberliyor. Bu ezber, değişimin maliyetini katlıyor.
Çözüm olarak facade deseni tanıtılıyor; karmaşık bir alt sisteme açılan sade bir kapı. Video, desenin hem en basit hem de en kolay yanlış uygulanan desenlerden biri olduğunu vurguluyor. Yanında, bakımlı tasarım kararları için hazırlanan bir eğitim programının duyurusu da yer alıyor.
İlk denemede ödeme akışı bir facade arkasına taşınıyor ve kod kısalıyor. Fakat imzada bir sızıntı kalıyor: ödeme yöntemi, Stripe'a özgü ödeme niyeti nesnesini döndürmeye devam ediyor. Arayan kod, bu nesnenin içini yoklamak ve Stripe hata türlerini yakalamak zorunda kalıyor. Sadeleşme var ama bağımsızlık yok.
Video buradaki yaygın yanılgıyı adlandırıyor: katman kurmak, sadeleştirmek sanılıyor; oysa asıl iş sınır bekçiliği. İyi facade, hangi bilginin uygulamaya geçeceğine karar veren gümrük kapısı gibi çalışmalı. İmza dış servisin dilini konuşuyorsa, bağımlılık yalnızca taşınmış olur.
İkinci sürümde tablo değişiyor: ödemeler için protokole dayalı bir soyutlama tanımlanıyor. Ödeme yöntemi sipariş ve ödeme bilgisini alıp servisten bağımsız bir sonuç nesnesi döndürüyor. Alan mantığı artık müşteri yaratmayı, niyet kurmayı, onay detaylarını hiç görmüyor; Stripe bilgisi sıfıra iniyor.
Ardından üç klasik tuzak sıralanıyor. Birincisi sızdıran soyutlama: dış servisin hata türleri veya iç kavramları üst katmana taşınıyor. İkincisi tanrı nesne: ödemeler, faturalar, abonelikler, müşteriler ve kuponlar tek bir dev facade içinde toplanıyor; bunun yerine uyumlu küçük servislere bölünmesi öneriliyor.
Üçüncü tuzak, önemli davranışın gizlenmesi: ödemelerin her zaman eşzamanlıymış gibi sunulması veya müşteri doğrulaması gereken akışların saklanması. Arayanın gerçekten bilmesi gereken kavram, sınırın arkasına gömülmemeli. Dürüst bir sınır, gizlemek ile korumak arasındaki farkı bilir.
Kapanışta facade ile adapter desenleri ayrıştırılıyor: adapter bir arayüzü diğerine dönüştürür ve parçaların değiştirilmesini kolaylaştırır; facade ise karmaşık bir alt sisteme erişimi sadeleştirir ve dış kararları içeriden uzak tutar. İkisi de sarar ama farklı dertleri çözer. Video, izleyicileri kendi bağımlılık hikâyelerini paylaşmaya çağırarak bitiyor.
Örnek kodun herkese açık bir depoda paylaşıldığı, küçük bir çalıştırma betiğiyle sonucun denenebildiği de ekleniyor. Böylece anlatılan soyutlama, kopyalanabilir somut bir örneğe bağlanmış oluyor.
AI yorumu
"Facade desenini yıllardır sadeleştirme sanıyordum; verinin ve hatanın sınırda tutulması gerektiğini bu videoyla yeniden öğrendim ve kendi servis katmanlarımı gözden geçirmeye karar verdim."
AI değerlendirmesi
Karşıt görüşü cömertçe kurarsak, her üçüncü parti çağrısının arkasına soyutlama koymak da bir maliyettir: fazladan arayüz, fazladan eşleme kodu, fazladan bakım. Tek tedarikçiyle yıllarca çalışacak küçük bir üründe doğrudan çağrı daha dürüst olabilir. Bu açıdan video, sınırın bedelini değil yalnızca kirasını anlatıyor denebilir.
Yöntem sınırları da var: örnek tek bir dile ve tek bir servise dayanıyor; eşzamanlı ödemeler, geri çağırma uçları ve muhasebe mutabakatı gibi gerçek dertler kapsam dışında. Ayrıca ne zaman soyutlama yapılmayacağını söyleyen bir eşik de verilmiyor; her şeyi saran ekipler için uyarı eksik kalıyor.
Doğrulanabilirlik tarafında iddialar büyük ölçüde yerleşik mimari yazınıyla uyumlu; altıgen mimari ve yolsuzluk önleyici katman tartışmaları aynı yönde öğüt veriyor. Yine de dinleyicinin, kendi dilindeki hata işleme ve protokol karşılıklarını ayrıca denetlemesi gerekir; videodaki sözdizimi birebir taşınamayabilir.
Benim pratik çıkarımım şu: yeni bir dış servise bağlanırken ilk günden ince bir sınır katmanı açar, hata türlerini kendi sonuç nesneme çevirirdim. Yalnızca gerçekten değişme ihtimali olan yerleri sarar, durağan yardımcıları olduğu gibi bırakırdım.
Kaynaklar
6 bağlantı; bunları kullanan başka yayımlanmış haber yok. Aynı bağlantıyı paylaşan haberler birbirini doğrulamış sayılmaz; kaynağın kökeni bağlantı sayısından çıkarılmaz.
- @YouTube YouTube'da izle
- @alysivji.github.io https://alysivji.github.io/clean-architecture-with-the-facade-pattern.html
- @dev.to https://dev.to/vladern/how-to-use-the-facade-pattern-to-create-custom-components-and-decouple-your-code-from-third-party-libraries-4c13
- @Reddit https://www.reddit.com/r/golang/comments/1h7jajk/why_clean_architecture_and_overengineered
- @threedots.tech https://threedots.tech/episode/is-clean-architecture-overengineering
- @tpierrain.blogspot.com https://tpierrain.blogspot.com/2020/11/hexagonal-or-not-hexagonal.html
programlama · ödeme · kodunu · stripe · bağımlılığından · kurtaran · nodesdaily