Tôi nghĩ điều này phụ thuộc rất nhiều vào ứng dụng cụ thể của bạn. Trong một ứng dụng tập trung duy nhất, tôi nghĩ có thể có một chút trùng lặp giữa các thư mục Core
và Common
. Nhưng điều quan trọng nhất là nó có ý nghĩa đối với ứng dụng của bạn. Đừng cảm thấy rằng bạn cần phải có các thư mục đó chỉ vì bạn đã thấy các thư mục này trong các ứng dụng khác ...
Đối với tôi, có một thư mục Core
và Common
có ý nghĩa trong một số trường hợp - ví dụ: một ứng dụng web có API và ứng dụng khách. Bạn có thể có thư mục Core
ở phía API, nơi thực thi lõi (logic nghiệp vụ) diễn ra và sau đó có thư mục Common
với một số thứ bạn cần trong cả hai API và phía máy khách - ví dụ: yêu cầu xác thực Http hoặc bộ chuyển đổi Json.
Dù sao, bạn có thể có một số Core
và một thư mục Common
trong các loại ứng dụng khác.
Ví dụ: thư mục Core
sẽ chứa các lớp đó là trung tâm cho ứng dụng của bạn - phần lớn các lớp mô hình kinh doanh sẽ ở đó.
Trong thư mục Common
, mặt khác, bạn có thể có một số lớp khác được chia sẻ, nhưng không trung tâm - ví dụ, một Logger
hoặc một MessageSender
có thể có mặt ở đó ...
Đối với dự thảo ít bạn cấu trúc mã, tôi nghĩ rằng gói Core
của bạn là gói cần sửa đổi - tại sao Lib1
không sử dụng Core
? Nếu một cái gì đó là lõi, thường là vì mọi thứ khác cần nó để chạy. Nếu bạn không có mã theo khái niệm chính giữa, có thể bạn có thể xóa gói Core
và chỉ giữ Common
?
Đối với câu hỏi khác của bạn - Tôi không nghĩ rằng những thứ Common
phải được chia sẻ bởi tất cả gói khác, nhưng chỉ với 2 hoặc nhiều hơn các gói chia sẻ điều gì đó, có thể được coi chung.
Thực hành tốt: làm những điều có ý nghĩa, không vi phạm [nguyên lý ít ngạc nhiên nhất] (http://en.wikipedia.org/wiki/Principle_of_least_astonishment) mà không có lý do thực sự tốt. Bạn không cảm thấy sự khác biệt bởi vì nó là một quyết định tùy ý. – Jon