2010-02-09 27 views
5

Tôi đang tạo thư viện để sử dụng với ứng dụng tôi đang xây dựng. Tôi đang xây dựng một cấu trúc không gian tên tương tự như dưới đây.Các dự án riêng biệt hoặc nhiều tệp lớp ... thực hành không gian tên tốt nhất trong C#

MyNamespace.Validation 
MyNamespace.Reports 
MyNamespace.Transactions 
MyNamespace.DataImport 
etc... 

Thực tiễn tốt nhất là tạo giải pháp với nhiều dự án cho mỗi không gian tên phụ hoặc một dự án có nhiều tệp lớp cho mỗi không gian tên phụ? Cảm ơn.

+0

Cho dù bạn chọn: Bạn nên luôn luôn (khá nhiều) có một tệp cho mỗi lớp. – Svish

Trả lời

9

Có những ưu điểm và nhược điểm đối với cả hai cách tiếp cận mà bạn cần tự quyết định giữa trường hợp của riêng bạn.

Pro để nhiều dự án:

  • riêng lắp ráp cho phép trình biên dịch để cung cấp hướng dẫn nghiêm ngặt hơn, có khả năng ngăn ngừa khớp nối từ leo qua. Điều này cho phép bạn duy trì các phụ thuộc tốt hơn.
  • Các hội đồng riêng biệt có thể được nạp khi cần thiết trong các dự án khác, có khả năng làm giảm khả năng tái sử dụng.
  • Các hội đồng riêng biệt có thể ngăn không cho mã không cần thiết được tải vào một quy trình, vì chúng được tải theo yêu cầu.

Nhược điểm cho nhiều dự án:

  • More triển khai phức tạp, như các file hơn cần triển khai (nhỏ)
  • chậm xây dựng/biên dịch, và thậm chí có khả năng nạp lần từ nạp nhiều hội (nhỏ)

Cá nhân, tôi nghĩ rằng những ưu điểm vượt trội so với nhược điểm trong hầu hết các trường hợp. Tôi thường sẽ phân chia không gian tên của tôi thành các hội đồng riêng biệt, miễn là chúng không liên quan. Trong trường hợp của bạn, bạn đang làm việc trên 4 khái niệm rất khác nhau, vì vậy cảm giác ruột của tôi là việc chia tách có ý nghĩa nhất.

+0

+1 - mặc dù tôi nghiêng theo cách khác, rằng 'Pro' đầu tiên là một vấn đề lớn. Bạn không muốn kết hợp quá nhiều lớp mà bạn phá hủy tầm quan trọng của công cụ sửa đổi hiển thị 'nội bộ'! –

+0

Có. Đó Pro đầu tiên (và thứ ba) là lý do chính tôi làm điều này thường. –

2

Tôi sẽ tìm giải pháp một với nhiều dự án.

Ưu điểm:
- Mỗi dự án có thể là một dll riêng
- Tất cả các dự án trong một giải pháp cho điều hướng dễ dàng giữa các tập tin

1

Tôi đã thường theo mô hình với một assembly là một không gian tên và tên DLL là trong không gian tên. Dễ dàng tìm thấy những DLL nào cần tham khảo

3

Tôi sẽ nói điều đó phụ thuộc.

  • Trước tiên, cách tốt nhất là đặt từng lớp vào tệp riêng của mình.
  • Nếu bạn đi với một dự án, tôi sẽ tạo thư mục cho mỗi không gian tên bên trong dự án đó và đặt các tệp mã vào thư mục thích hợp.
  • Làm, Visual Studio trên sẽ tự động tạo ra các file lớp mới bên trong namespace đúng

Tôi nghĩ rằng câu hỏi thực sự ở đây là mặc dù:

Nếu điều này là duy nhất sẽ được sử dụng một lần, đưa mọi thứ vào một dự án sẽ có ý nghĩa. Tuy nhiên, nếu mã này sẽ được tái sử dụng, bạn nên nghĩ rằng nếu bạn sẽ tái sử dụng chỉ là một phần (hoặc một không gian tên phụ) của thư viện này. Nếu câu trả lời là có, tôi sẽ chia tách các không gian tên thành các dự án riêng biệt, vì vậy trong tương lai, bạn chỉ có thể bao gồm các dự án bạn cần.

3

Quyết định chính xác cách chia nhỏ giải pháp của bạn là chủ quan - và nó thực sự phụ thuộc vào các chi tiết cụ thể của mã của bạn.

Tuy nhiên, có một điều chắc chắn: duy trì nhiều hội đồng có nhược điểm! This article đặc biệt tốt khi mô tả những hạn chế đó, quan sát cách chúng thêm chi phí vào thời gian phát triển, thời gian biên dịch, thời gian triển khai và thời gian chạy.

Tôi sử dụng càng ít cụm càng tốt, nhắm vào một cụm duy nhất trong khi cô lập các vùng dễ bay hơi của miền. Khi nhiều assembly rõ ràng là thích hợp hoặc cần thiết (và chúng thường là, đặc biệt để thực thi tách), tôi cố gắng hết sức để nhóm các giao diện sẽ thay đổi cùng một lúc vào cùng một assembly.

Các vấn đề liên quan