Python'da tasarım ve mimari
Büyüyen Python projelerini desenler, katmanlar ve bağımlılık yönetimiyle düzenler; test edilebilir, değiştirmesi kolay kod tabanları kurarsın.
Seviye 401 · 17 ders · 18 pratik lab
Dersler
Tasarım ilkeleri
- Python'da SOLID ilkeleri
- Bağlılık ve uyum
- Bağımlılık enjeksiyonu: çerçevesiz
- Hata tasarımı: istisna mı, dönüş değeri mi?
- Kısa görev: iç içe geçmiş modülleri ayır
Desenler
- Strateji ve fabrika desenleri
- Gözlemci deseni ve olaylar
- Bağdaştırıcı ve cephe
- Komut deseni ve geri alma
- Durum makineleri
- Kısa görev: uyarıları kanallara yönlendiren tasarım
Mimari
- Katmanlı ve altıgen mimari
- Alan modeli ve değer nesneleri
- Ayarların tek kaynaktan yönetimi
- Eklenti mimarisi ve giriş noktaları
- Kısa görev: veri kaynağını değiştirilebilir yap
Bitirme
- Bitirme görevi: büyük bir betiği katmanlı uygulamaya dönüştür
Pratik lablar
- Saati dışarıdan vermek: datetime.now() çağrısı içine gömülü olduğu için test edilemeyen vardiya hesaplayıcıya saati parametre olarak ver ve sabit saatle test yaz.
- Her işi yapan rapor sınıfını bölmek: Veriyi okuyan, hesaplayan ve e-posta atan tek sınıfı üç sorumluluğa ayır; davranış testleri değişmeden geçmeli.
- Döngüsel içe aktarmayı çözmek: Birbirini içe aktaran sipariş ve fatura modüllerini ortak bir arayüz çıkararak ayır; içe aktarma döngüsü denetimi ve testler temiz geçmeli.
- Hata kodu döndüren fonksiyonu düzeltmek: Başarısızlıkta -1 döndüren ve çağıranların unuttuğu stok fonksiyonunu anlamlı bir istisna yükseltecek şekilde değiştir ve çağıranları güncelle.
- Ödeme hataları için istisna ağacı kurmak: Tek tür Exception fırlatan ödeme modülüne geçici ve kalıcı hataları ayıran bir istisna ağacı kur; yeniden deneme yalnızca geçici olanlarda çalışsın.
- Katman sınırında hataları çevirmek: Veritabanı istisnalarını doğrudan arayüze sızdıran uygulamada depo katmanında alan hatalarına çeviri yap ve iç ayrıntının kullanıcıya gitmediğini testle göster.
- Kargo ücreti kurallarını stratejiye ayırmak: Uzun if zinciriyle yazılmış kargo ücreti hesabını seçilebilir strateji fonksiyonlarına böl ve yeni bir kuralı mevcut koda dokunmadan ekle.
- Stok değişimini abonelere duyurmak: Stok azaldığında doğrudan e-posta ve kayıt kodu çağıran sınıfı olay yayımlayacak şekilde değiştir; aboneler eklenip çıkarılabilsin, biri hata verse diğerleri çalışsın.
- Geri alınabilir komutlarla liste düzenleyici: Ekleme, silme ve taşıma işlemlerini komut nesnelerine çevir; sınırsız geri al ve yinele desteğini rastgele işlem dizileriyle test et.
- Eski SMS istemcisine bağdaştırıcı yazmak: Farklı metot adları kullanan eski SMS istemcisini uygulamanın bildirim arayüzüne uyduran bağdaştırıcıyı yaz.
- Destek kaydı için durum makinesi: Destek kaydının açık, beklemede, çözüldü ve kapalı durumları arasındaki izinli geçişleri tablo ile tanımla ve izinsiz geçişte hata ver.
- Dağınık yedekleme adımlarına tek kapı açmak: Sıkıştırma, şifreleme, yükleme ve doğrulama adımlarını çağıranların tek tek bildiği yedekleme koduna bir cephe sınıfı yaz ve yarıda kalan adımda temizlik yap.
- Ayarları tek kaynaktan okumak: Modüllere dağılmış os.environ okumalarını tek bir dondurulmuş ayar nesnesinde topla ve eksik zorunlu ayarı açılışta bildir.
- Para için değer nesnesi tanımlamak: Tutarı float ve para birimini ayrı dizgi olarak taşıyan koda değişmez bir Para değer nesnesi ekle; farklı birimlerin toplanmasını engelle.
- Veri kaynağını değiştirilebilir yapmak: Dosyaya doğrudan yazan iş mantığını bir port arayüzünün arkasına al; bellek içi ve SQLite bağdaştırıcılarının aynı sözleşme testlerini geçtiğini göster.
- Yavaş istemcinin önüne vekil nesne koymak: Kur bilgisi veren yavaş istemciyle aynı arayüzü sunan bir vekil sınıf yaz; yanıtları kısa süre önbellekte tutsun ve çağıran kod hiç değişmesin.
- Geçiş tablosuyla trafik ışığı: Trafik ışığının durumlarını ve izinli geçişlerini bir sözlük tablosunda tanımla; tabloda olmayan geçiş istenirse hata verilsin.
- Koşullu geçişli sipariş durum makinesi: Sipariş durum makinesine ödeme alınmadan kargoya geçişi engelleyen koşullar, geçiş geçmişi ve iptalde geri alma adımı ekle; geçersiz geçişler durumu değiştirmesin.
Kurs hakkında
Büyüyen Python projelerini desenler, katmanlar ve bağımlılık yönetimiyle düzenler; test edilebilir, değiştirmesi kolay kod tabanları kurarsın.
Ne öğreneceksin
- Tasarım ilkeleri
- Desenler
- Mimari
- Bitirme
Ön koşullar
Aynı yolun 301 düzeyine kadar olan konularını uygulamış olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 401 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.