Semua pustaka kode yang saya baca atau gunakan memiliki struktur folder yang serupa:
- pengontrol
- Pengontrol posting blog
- Pengontrol komentar
- model
- Maket postingan blog
- Model komentar
- Pendapat
- Baca artikel blognya
- Lihat detail artikel blog
- pembantu
Pengembang yang telah membaca Domain Driven Design, atau menggunakan Doctrine2 atau Hibernate, sering kali lebih fokus pada model domain:
- Model
- kesatuan
- gudang
- Gudang artikel blog
- Perpustakaan komentar
- repositori pengguna
- Melayani
Prinsip struktur folder ini sering kali terinspirasi oleh kerangka kerja yang mereka gunakan. Lagi pula, jika kerangka kerja Anda disusun seperti ini, itu pasti merupakan praktik terbaik, bukan? Mengorganisasikan kerangka kerja dalam paket memang sangat masuk akal [modules, components, …] Seperti ini.
Ini adalah kesempatan yang terlewatkan untuk lamaran Anda. Anda tidak mengkomunikasikan peran masing-masing kategori relatif terhadap kategori lain, atau ketergantungan yang dimilikinya. BlogPostRepository dan CommentRepository tidak memiliki hubungan langsung satu sama lain, selain fakta bahwa keduanya merupakan repositori. Namun, BlogPostRepository memiliki ketergantungan yang sangat erat pada BlogPost.
- domain blog
- artikel blog
- artikel blog
- Gudang artikel blog
- Komentar
- Komentar
- Perpustakaan komentar
- artikel blog
- domain inti
Hal ini memudahkan untuk mengomunikasikan konteks terbatas dan mengilustrasikan ketergantungan. Misalnya, BlogDomain bergantung pada CoreDomain. Pada skala yang lebih kecil, rangkaian BlogPost mengandalkan rangkaian Komentar. Untuk memperbesar lebih jauh, BlogPostRepository mengandalkan BlogPost.
Dengan kata lain: BlogPost dan Comment sama-sama mengetahui penulisnya. BlogPost memiliki nol atau lebih komentar, namun komentar tersebut tidak mengetahui bahwa mereka milik BlogPost. BlogPostRepository mengelola entitas BlogPost, namun entitas ini tidak menyadari bahwa mereka sedang dikelola.
Jelas sekali seluruh contoh ini terlalu sederhana, seperti halnya contoh-contoh biasa. Intinya adalah, untuk menjaga kode Anda tetap bersih, penting untuk mempertimbangkan dengan cermat penggabungan antar elemen. Struktur folder membantu menjelaskan dependensi. Jarak yang dekat pada pohon menunjukkan ikatan yang lebih erat. Dokumentasi selanjutnya dapat membantu menjelaskan arah penggandengan. Kami juga dapat memutuskan bahwa komentar juga mengetahui BlogPost miliknya, namun ini harus merupakan keputusan yang disengaja.
Diperbarui pada 18 Agustus 2014: Saya masih setuju dengan gagasan umum artikel tersebut, yaitu mengelompokkan file atau kategori berdasarkan kohesinya dalam domain dan model, bukan berdasarkan skema atau infrastruktur yang mendasarinya. Namun, saya tidak akan menggunakan nama seperti BlogDomain dan CoreDomain lagi. Apa pun bidang inti Anda, kemungkinan besar akan berubah di masa depan. Perusahaan terus berkembang. Otentikasi mungkin merupakan nama yang lebih baik. Saya juga tidak akan menggunakan akhiran “Domain” lagi. Terakhir, saya akan mencoba mengurangi hubungan antara blogging dan autentikasi, seperti hanya berbagi serangkaian peristiwa domain.