Öncelikle, atıfta bulunduğunuz Wikipedia makalesinin çok iyi olduğunu düşünmüyorum, çünkü bu yalnızca Domain Driven Design'a yardımcı olabilecek bir çok şeye atıfta bulunuyor ve uygulama hakkında kimseyi aydınlatmak için çok az şey yapıyor.
Ancak, Domain Driven Design'ı kalbe alan biri olarak (ki bu, 3D için değil, genellikle 3DD yerine geçer), Eric'in ilk bölümünü çok fazla okursanız, DDD'nin temellerinin her zaman açık olduğunu hissettim. Evans'ın kitabı. Ancak, bir dizi kalıp ve pratiktir, bu nedenle, ne olduğu ve avantajların bir ayrıntıya girmeden ne olduğuna dair 3 cümle özeti vermek o kadar kolay değildir. Herhangi bir kişi ile rezonansa giren detaylar da çok farklı olabilir; 10 yıl önce kendimi hiç görmemiş olacağım.
DDD gümüş bir kurşun değildir. Mantıklı bir şekilde yapıldığında, yazılım oluşturma konusunda zanaatkar gibi bir yaklaşım benimsemek ve geliştirme ekipleri ile yazılım geliştirdikleri işletmeler arasındaki bilişsel sürtünmeyi azaltma ihtiyacını tanımakla ilgilidir. En önemli uygulamalardan biri, yazılım ekibi ve işletme ekibinin kullandığı alan terimlerinin mümkün olduğu kadar yakından eşleştiği bir katmana sahip olmaktır. Çözmeye çalıştığınız iş problemini anlamaya başladığınızda bu katmanı yinelemeli olarak yaratırsınız. İş mantığı bu katmanda makul bir şekilde kodlandığında, kurumsal uygulamaların tipik olarak bu sistemler ile etkileşimleri arayüzlerle dışa aktararak tüm sahip olduğu bağımlılıklardan izole edildiğinde, asıl etki alanı katmanında kullanılan dil sonunda oldukça özlü, açık ve okunabilir hale gelir.
Birçok kurumsal yazılımı gördüğüm şekli göz önüne alındığında, DDD, gümüş bir mermi gibi ses çıkartabiliyor, çünkü çoğu kurumsal yazılım kayda değer bir şekilde neredeyse kayda değer kaygı duyuyor ve yazılım ekibi büyük bir değişim korkusuyla yaşıyor. görünüşte önemsiz kod değişikliklerinin bile yan etkilerinin ne olabileceği konusunda hiçbir fikirleri yoktur, oysa ki düzgün bir şekilde etkilenmiş bir alan katmanı bağımsız olarak test edilebilir ve doğrulanabilir olacaktır. Fakat aslında DDD, sistemlerin nadiren izolasyon halinde bulunduğunu kabul ediyor. DDD, eski sistemler için başa çıkma kalıpları içerir (yolsuzlukla mücadele katmanı, sınırlı bağlamlar, bir çift isimlendirmek için).
Gevşek bağlanma disiplini dahil olmak üzere nesne yönelimli tasarım uyguluyorsanız ve oldukça dini bir şekilde ünite testi uyguluyorsanız ve acımasızca refactor kodu uygularsanız ve sisteminizi kurarken etki alanı uzmanlarıyla çalışırsanız, esasen sonuçla sonuçlanırsınız. temel olarak, etki alanı tarafından yönlendirilen tasarımın savunucularından bahsetti.
Evans'ın kitabında tarif edilen ve çoğunlukla kurumsal yazılım geliştirme için geçerli olan bazı spesifik modeller vardır ve bazıları oldukça evrensel ilkelerdir, ancak esasen DDD, zaman içinde teknik borç birikimini azaltabilecek yazılım geliştirmeye yönelik pratik bir yaklaşımdır. müşterilerinizi daha mutlu kılar çünkü birbirinizle aynı dili konuşabiliyorsunuz ve birbirinizi daha iyi anlamanın avantajları nedeniyle daha iyi çalışan çözümler sunuyoruz.