Ketika menilai proyek potensial di tempat kerja, saya menyarankan bahwa mungkin menguntungkan untuk menggunakan pendekatan desain berbasis domain untuk model objeknya. Proyek ini tidak memiliki domain yang terlalu rumit, jadi rekan kerja saya melemparkan ini ke saya:
Telah dikatakan, bahwa DDD menguntungkan dalam kasus di mana ada model domain yang kompleks ("... Ini berlaku setiap kali kami beroperasi dalam domain yang kompleks dan rumit" Eric Evans).
Apa yang saya hilang adalah - bagaimana Anda mendefinisikan kompleksitas suatu domain? Bisakah itu ditentukan oleh jumlah akar agregat dalam model domain? Apakah kompleksitas suatu domain dalam interaksi objek?
Domain yang kami nilai terkait dengan penerbitan online dan manajemen konten.
Jawaban:
Kompleksitas logika bisnis, atau disebut perilaku aplikasi, adalah faktor yang paling penting. Faktor paling penting kedua adalah seberapa besar kesenjangan antara masalah teknis dan kosakata bisnis yang digunakan untuk menggambarkan masalah itu, karena DDD adalah tentang menciptakan kosakata bersama antara bisnis dan tim teknik.
Beberapa pola yang digunakan dalam DDD umumnya berguna dalam arsitektur aplikasi perusahaan, seperti pola Repositori, Bounded Context, dan Layered Architecture. Hanya karena Anda menggunakan pola-pola itu, bukan berarti Anda melakukan desain yang didorong oleh domain.
Jika tidak ada banyak perilaku, artinya, Anda kebanyakan menyimpan data, dan tidak bertindak pada data itu, mungkin ada nilai yang jauh lebih sedikit dalam membangun lapisan domain itu. Dalam manajemen konten, jika semua yang Anda lakukan adalah menyetujui dan mempublikasikan, mungkin itu dapat diwakili oleh tanda di sistem, daripada metode domain. Tetapi ketika Anda mulai menambahkan perilaku tambahan, kesesuaian lapisan domain penuh menjadi lebih jelas.
Jika kita berbicara tentang manajemen konten, berikut adalah beberapa aturan (bayangkan) yang mungkin mulai mengisyaratkan perlunya DDD:
sumber