2009-01-10 66 views
7

Có quy tắc chung nào về số lượng lớp, giao diện, v.v. nên đi vào một không gian tên đã cho trước khi các mục cần được phân loại thêm vào không gian tên mới không? Giống như một phương pháp hay nhất hoặc sở thích cộng đồng? Hay đây là tất cả sở thích cá nhân?Quy tắc không gian tên của ngón tay cái

namespace: MyExample.Namespace 
interface1 
interface2 
interface3 
interface4 
interface5 
interface6 
interface7 
interface8 
interface9 

Hoặc

namespace: MyExample.Namespace.Group1 
interface1 
interface2 
interface3 
namespace: MyExample.Namespace.Group2 
interface4 
interface5 
interface6 
namespace: MyExample.Namespace.Group3 
interface7 
interface8 
interface9 

Trả lời

4

Tôi chưa thấy bất kỳ quy tắc nào ở bất kỳ nguồn đáng tin cậy nào nhưng có một số tùy chọn phổ biến mà tôi thấy trong khi làm việc với hầu hết các nhà phát triển. Có một vài điều giúp bạn tạo ra các không gian tên.

  1. miền của lớp
  2. Có một lớp hoặc một giao diện (Tôi đã thấy một số nhà phát triển thích không gian tên như ShopApp.Model.Interfaces). Hoạt động thực sự tốt nếu giao diện của bạn là một số dịch vụ hoặc hợp đồng dữ liệu.
  3. Không có không gian tên quá sâu, 3 (.) Là đủ. Nhiều hơn thế có thể gây khó chịu.
  4. Hãy mở để sắp xếp lại không gian tên nếu bất kỳ lúc nào bạn cảm thấy nó đã trở nên phi logic hoặc khó quản lý.
  5. Không tạo không gian tên chỉ vì mục đích của nó.

Mã hóa hạnh phúc !!!

+0

Câu trả lời hay. Một điều cần lưu ý là # 4 có thể là vấn đề nếu bạn đang làm việc trên một thư viện hiện có - vì vậy hãy chắc chắn rằng bạn nhận được nó ngay lần đầu tiên nếu bạn có cơ hội. ;) –

0

Nó thường được coi là hình thức xấu để có một số lượng nhỏ của các lớp học trong một không gian tên. Tôi luôn cho rằng thực tế là nhiều không gian tên dẫn đến nhầm lẫn.

Tôi khuyên bạn nên chia lớp thành các không gian tên logic hợp lý và thiết thực nhất có thể. Tuy nhiên nếu bạn kết thúc với chỉ một hoặc hai lớp học cho mỗi không gian tên thì bạn có thể bị gãy quá nhiều và nên suy nghĩ về việc hợp nhất.

+1

"Thường được coi là biểu mẫu xấu" - bởi ai? Điều này có vẻ gây nhiều tranh cãi và không phải tất cả. Tôi chưa bao giờ nghe điều đó. –

+0

Cái gì đó của nó FxCop luôn phàn nàn về - đó là khá nhiều tất cả tôi phải trả lại cho tôi :) –

+0

Mặc dù Microsoft không phải là tính tổng quát, đặc biệt là không có trong lĩnh vực rất chung chung của không gian tên; hầu như tất cả các ngôn ngữ lập trình đều không phải bởi Microsoft; Ngoài ra, IMHO, số lượng các lớp bên trong một không gian tên không phải là điều nên biện minh cho sự tồn tại của nó, nhưng các lý do khác là –

2

Tôi không biết bất kỳ quy tắc nào về số lượng mặt hàng, nhưng các loại quy tắc đó có xu hướng là rác quá chung. Đảm bảo có kết nối hợp lý giữa các mục trong cùng một không gian tên. Nếu một không gian tên đang trở nên quá đông đúc (không, tôi hy vọng), hoặc những thứ trong không gian tên chỉ liên quan lỏng lẻo nhất, hãy xem xét việc chia nhỏ nó thành nhiều không gian tên.

2

Nếu xây dựng thư viện hoặc mô đun, tốt hơn là chỉ sử dụng một không gian tên, vì chức năng chính của vùng tên là tránh xung đột tên và bạn có quyền kiểm soát tên được gán cho lớp và giao diện.

+1

+1 để nhấn mạnh việc sử dụng không gian thực – Perpetualcoder

1

Tôi cho rằng hệ thống phân cấp không gian tên chỉ nên được lưu lại bằng các cân nhắc về thiết kế và cấu trúc phân cấp của mô hình/API.

Nếu một không gian tên thể thao số lượng lớn các lớp không liên quan, hãy suy nghĩ lại thiết kế của bạn.

Trái với những gì Andrew nói, tôi sẽ không lo lắng về các không gian tên có chứa vài lớp - mặc dù tất nhiên là phân cấp chỉ nên được phân biệt chi tiết khi cần thiết để thể hiện thiết kế. Mặt khác, tôi thấy nó hoàn toàn hợp lý cho một không gian tên chỉ chứa một lớp đặc biệt cao, hoặc có lẽ chỉ là một tập rất nhỏ, trong đó một loại mã hóa nhiệm vụ và những người khác cung cấp một API (ngoại lệ, enums cho các đối số ...).

Ví dụ: lấy System.Text.RegularExpressions (trong .NET). Cấp, nhiều hơn một lớp, nhưng chỉ là.

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