Proyek ini, saya telah terlibat, memiliki struktur file / folder proyek yang berorientasi arsitektur:
Root
|____ Node1
|____ Event Handlers
| |___ <all event handlers of project>
|____ Events
| |___ <all events of project>
|____ Request Handlers
| |___ <all request handlers of project>
|____ Requests
| |___ <all requests of project>
|____ ...
Ini jelas dari sudut pandang arsitektur sistem (telah diusulkan oleh tim pengembangan).
Ini adalah struktur berorientasi fitur yang telah diusulkan oleh tim desainer:
Root
|____ Feature #1
|____ Event Handlers
| |___ <all event handlers of Feature #1>
|____ Events
| |___ <all events of Feature #1>
|____ Request Handlers
| |___ <all request handlers of Feature #1>
|____ Requests
| |___ <all requests of Feature #1>
|____ ...
Varian ini lebih dekat dengan desainer dan jelas menggambarkan fitur yang harus diimplementasikan.
Tim kami telah memulai perang suci: apa pendekatan terbaik. Bisakah seseorang membantu kami dan menjelaskan kontra dan pro dari yang pertama dan kedua. Mungkin ada yang ketiga yang lebih bermanfaat dan bermanfaat bagi kita berdua.
Terima kasih.
Jawaban:
Saya akan memilih yang kedua. Dalam struktur pertama, penangan event untuk
FeatureA
sepenuhnya tidak terkait dengan penangan event untukFeatureB
. Tampaknya pengembang akan mengerjakan satu fitur pada satu waktu, dan jika Anda mengerjakanFeatureX
permintaan, jauh lebih mungkin bahwa Anda perlu mengubahFeatureX
penangan permintaan daripada, katakanlah,FeatureZ
permintaan.Ngomong-ngomong, saya suka bagaimana Anda mengajukan pertanyaan ini dari sudut pandang netral.
sumber
Saya selalu lebih nyaman dengan pendekatan kedua, tetapi saya selalu memiliki "fitur" yang disebut umum atau umum untuk kelas yang benar-benar digunakan bersama / basis.
Pendekatan dua membuat hal-hal yang terpisah benar-benar terpisah, tetapi tanpa daerah "umum" itu kadang-kadang memisahkan hal-hal menjadi daerah yang mereka tidak cocok.
sumber
Mengapa fitur-penemu peduli dengan detail implementasi? Jika itu adalah pemisahan antara sisi argumen, maka saya pikir jawabannya jelas. Orang yang menciptakan ide / fitur tidak menentukan struktur file yang dibutuhkan oleh pelaksana.
Ini adalah masalah yang sangat penting ketika implementasi fitur mencakup beberapa dll, exes, database, atau perangkat lunak lainnya.
sumber
Harus setuju dengan pendekatan kedua, mengingat dua opsi. Yang pertama hanya terlihat seperti gumpalan amorf. Setidaknya yang kedua memiliki beberapa bentuk.
Itu benar-benar tergantung pada seberapa besar proyek itu. Jika "fitur" besar, masing-masing membutuhkan ember yang berbeda.
sumber
Saya tidak mengerti terminologi yang Anda gunakan, tetapi akan mencoba menjawabnya, karena kedua struktur tampaknya merupakan pendekatan yang salah.
Kecuali jika Anda hanya memiliki sedikit fitur, Anda perlu mengelompokkannya ke dalam kategori - dan itu tampaknya tidak dipenuhi dalam kedua desain (kecuali jika itu yang dimaksudkan oleh Node1, tetapi "semua X proyek" menyarankan jika tidak, dan membuat saya bertanya-tanya apakah itu WTF - apakah ada Node2?)
Saya mungkin mempertimbangkan sesuatu seperti ini:
Atau ini:
Tapi mereka berdua membuat asumsi yang mungkin benar-benar tidak aktif - jika Anda dapat memperbarui pertanyaan Anda dengan lebih detail, saya mungkin berubah pikiran. :)
sumber