Clean Architecture, karmaşık yazılım sistemlerinin tasarımında, iş mantığının çerçevelerden, veritabanlarından, kullanıcı arayüzünden ve diğer dış faktörlerden bağımsızlığını sağlayan bir yaklaşımdır. Temelinde, kodun katmanlara ayrılması ve bu katmanlar arasında mümkün olan en az karşılıklı etkileşim bulunması yatmaktadır.
Klasik Clean Architecture'da iç katmanlar (Use Cases, Entities) ve dış katmanlar (Frameworks, Gateways, Controllers) göze çarpar. Bağımlılıkların taşınması yalnızca içe doğru olur (bağımlılık tersine çevrilmesi), bu da sistemlerin kritik iş mantığını bozma riski olmadan kolayca yapılandırılmasını, değiştirilmesini ve test edilmesini sağlar.
Kod örneği (Python'da):
# Entity class Order: def __init__(self, id, total): self.id = id self.total = total # Use case class CompleteOrderUseCase: def __init__(self, order_repository): self.order_repository = order_repository def execute(self, order_id): order = self.order_repository.get_by_id(order_id) order.completed = True self.order_repository.save(order)
Anahtar özellikler:
Clean Architecture'daki tüm katmanlar ayrı servisler olarak uygulanabilir mi?
Zorunlu değildir. Bazen her katmanı ayrı bir serviste ayırmak, yüksek bağlılık veya iletişim üzerindeki fazla yük nedeniyle uygun olmayabilir. Katmanlar mantıksal bir ayrım iken, fiziksel izolasyon yalnızca haklı bir ihtiyaç durumunda gereklidir.
Geliştirmeyi hızlandırıyorsa, Clean Architecture'daki bağımlılık yönü kuralını ihlal etmek mümkün mü?
Hayır, çünkü kısa süreli zaman tasarrufu bile gelecekte desteği karmaşıklaştırır. Bağımlılık yönü, Clean Architecture'nın temel ilkesidir ve ihlali, yapının avantajlarını kaybettirir.
İş kuralları her zaman yalnızca iç katmanda mı uygulanmalıdır?
Evet, tüm önemli iş kuralları iç katmanda (Entities veya Use Cases) yer almalıdır, böylece dış bağımlılıkların değişimi iş mantığını etkilemez.