Tổ chức package project web như thế nào

Anh chị cho em hỏi trong thực tế khi đi làm người ta tổ chức file theo cách nào trong 2 cách dưới đây. Cá nhân thì đang làm theo cách 2 ạ.

Cách 1: Gom tất cả controller vào một folder, gom các lớp DAO vào một folder DAO, …

project/
├─ service/
│  ├─ AccountService
│  ├─ ProductService
│  ├─ N_Service
├─ presentation/
│  ├─ Account.html
│  ├─ Product.html
│  ├─ N_GUI.html
├─ controller/
│  ├─ ProductController
│  ├─ AccountController
│  ├─ N_Controller
├─ DTO/
│  ├─ AccountDTO
│  ├─ ProductDTO
│  ├─ N_DTO
├─ Entity/
│  ├─ AccountEntity
│  ├─ ProductEntity
│  ├─ N_Entity
├─ Model/
│  ├─ AccountModel
│  ├─ ProductModel
│  ├─ N_Model

Cách 2: Ví dụ những gì liên quan đến Account thì gom chung lại thành 1 folder: AccountController, AccountService, AccountBO, AccountDAO, AccountDTO, AccountEntity, AccountModel, …

project/
├─ account/
│  ├─ AccountService
│  ├─ Account.html
│  ├─ AccountController
│  ├─ AccountDATA/
│  │  ├─ AcountPOJO
│  │  ├─ AccountDTO
│  │  ├─ AccountModel
├─ product/
│  ├─ Product.html
│  ├─ ProductController
│  ├─ ProductService
│  ├─ productDATA/
│  │  ├─ ProductPOJO
│  │  ├─ ProductDTO
│  │  ├─ProductModel
├─ N_Object/
│  ├─ N_Controller
│  ├─ N_Service
│  ├─ N_GUI.html

Cách 1 sẽ tốt hơn cho cậu.

  • Cậu sẽ hiểu được kiến trúc phần mềm khi nhìn vào cây thư mục.
  • Nó cũng tương đối logic để cậu dễ dàng tìm kiếm các file.
    Cậu luôn biết tìm html file ở trong thư mục presentation chẳng hạn.

Cậu sẽ thấy cách tổ chức này trong hầu hết các project chuyên nghiệp.

Cách 2 sẽ không tốt bằng cách 1, vì:

  • Cậu sẽ rất khó để sắp xếp nơi để model sử dụng chung giữa các service.
    Kết quả là, cậu cũng khó tìm nó nữa.
  • Để chung HTML/CSS/image file với file code khác không phải practice tốt đâu.

Hope it helps!

9 Likes

Mình thì hay dùng cách 2 hơn

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?