Tasarım & Temiz Kod
Kodu okunur ve değiştirilebilir tutmak
Clean code, SOLID, nesne yönelimli tasarım ve design pattern'lar. Dile değil, kararlara odaklanan hat: bir sınıfı ne zaman böler, ne zaman bırakırsın.
14 ders 132 dk toplam süre Sertifikan
Bu konunun dersleri şu çalışma yollarında: Adım Adım Backend (14)
Başlangıç
Orta
- 1/3 yıldız2/3 yıldız3/3 yıldız SOLID — Beş Harf, Tek Soru SOLID beş ayrı kural gibi görünür ama hepsi aynı soruyu sorar: bu kod değişince başka kaç yere dokunmam gerekecek? Beşi de bu sayıyı küçültmenin farklı yollarıdır. 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Nesne Yönelimli Tasarım — Kapsülleme ve Kompozisyon Nesne yönelimli tasarımın dört ilkesini saymak kolay. Günlük kodda ise iki karar verirsin: bu nesne neyi korumalı, ve bir şeyi yeniden kullanmak için ondan mı türeyeceğim, yoksa onu içime mi koyacağım? 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Tasarım Kalıpları — Ne Zaman Kazandırır Tasarım kalıpları icat edilmedi, fark edildi: farklı ekipler aynı soruna aynı çözümü bulunca ona bir ad verildi. Her kalıp bir şeyi ucuzlatır, başka bir şeyi pahalılaştırır. 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Zengin Domain Modeli — JPA Entity'de Kapsülleme Her alanı setter'lı bir nesne ve bütün kuralları bilen bir servis, kuralı veriden ayırır; biri servisi atlarsa kural da atlanır. Kuralı nesnenin kendi metotlarına taşıdığında hangi kapıdan girilirse girilsin atlanamaz. 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Value Object ve Record — Anlamı Tipe Taşımak Bir ilaç kutusunda yalnızca '5' yazması tehlikelidir: 5 mg mı, 5 tablet mi? long ve BigDecimal de böyle anlamsızdır. Değeri ve kuralını kendi tipine (Money, Quantity) taşıdığında karışıklık derleme hatasına döner. 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Spring'in İçindeki Kalıplar — Strategy, Template Method, Proxy, Observer Spring Boot'ta tasarım kalıplarını çoğu zaman kendin yazmazsın; Spring onları senin için kurar. Asıl iş, hangisinin ne zaman çalıştığını bilmek; özellikle bir olay dinleyicisinin kayıttan önce mi sonra mı çalıştığını. 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Hexagonal Mimari — Bağımlılık Oku Hangi Yöne Bakıyor Controller, Service, Repository dizilimi iş kuralını veritabanına bağlar. İş kuralı kendi ihtiyacını bir arayüzle tanımlarsa ok tersine döner: veritabanı değişse de kural değişmez, tıpkı prize göre değişen şarj adaptörü gibi. 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Code Smell ve Refactoring — Davranışı Değiştirmeden Değiştirmek Code smell bir hata değil, 'buraya bir bak' diyen bir ipucudur. Refactoring kodun davranışını aynı bırakıp düzenini değiştirmektir; aynı kaldığını testler kanıtlar. Küçük adım at, her adımda test et. 8 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Yaratımsal Kalıplar — Constructor Ne Zaman Yetmez Bir nesneyi kurmanın birkaç yolu var. İki üç alan için constructor ya da record yeter; nesneye bir ad gerekiyorsa static factory, çok sayıda isteğe bağlı ayar varsa builder. Hangisi olursa olsun, hatalı nesne hiç doğmamalı. 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Yapısal Kalıplar — Sarmalayarak Genişletmek Decorator bir nesneyi hediye paketi gibi sarar ve ona davranış ekler; Adapter yabancı bir arayüzü kendi dilimize çevirir; Facade karmaşık bir sisteme tek bir kapı açar. Sarmalarken sıra, kimin neyi göreceğini belirler. 8 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Davranışsal Kalıplar — State, Chain of Responsibility, Command Bir nesnenin davranışı durumuna göre değişiyorsa durumu açıkça say; üç ayrı true/false, anlamsız karışımlara izin verir. Sıralı kontroller için zincir kur, sonraya bırakılacak isteği bir nesneye çevir. 9 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız DRY, KISS, YAGNI ve Demeter — Değişimi Ucuz Tutmak DRY, bir bilginin tek sahibi olsun der; tesadüfen aynı görünen kodu birleştirmek ise yanlış soyutlamadır. KISS ve YAGNI bugün gerekmeyeni yazma der. Demeter, uzaktaki nesnelerin içini ezberleme der. 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Domain Olayları — Hesap Açılmadı, Hoş Geldin E-postası Neden Gitti? ✦ yeni Hesap açılınca e-posta ve puan gibi yan işler olur. Servisin hepsini çağırması onu herkese bağlar; olay kullanmak kodu ayırır ama hatayı ayırmaz. Geri alınamayan yan işler commit'ten sonra çalışan bir dinleyiciye gider. 8 dk