2011-09-05 36 views
6

Đây có phải là OK:Có OK không có tên không gian tên tồn tại ở hai điểm trong cây?

namespace Simple.OData 
{ 
    // Common OData functionality 
} 

namespace Simple.Data.OData 
{ 
    // The Simple.Data adapter for OData 
} 

Có vẻ như nó có thể sai, nhưng tôi không chắc chắn.

+0

[Bài đăng này] (http://stackoverflow.com/questions/918894/namespace-naming-conventions/918913#918913) cung cấp cho bạn một liên kết với các hướng dẫn đặt tên cho tên miền. – JPBlanc

Trả lời

7

Chắc chắn là hợp lệ - hãy xem xét System.Xml.LinqSystem.Linq. Tôi không thể đoán trước được bất kỳ vấn đề nào ... nhưng đó không phải là để nói rằng nó là nhất thiết phải là một ý tưởng hay.

Cá nhân tôi thích Simple.Data.OData qua Simple.OData.Data, như tôi nghi ngờ điều này chủ yếu nhằm vào những người đang sử dụng Simple.Data, nhưng tình cờ được sử dụng OData - không những người tập trung trên OData. Một lần nữa, điều này giống như LINQ: System.Xml.Linq là một API XML sẽ phát với LINQ; nó không phải là một nhà cung cấp LINQ "" như vậy.

Về cơ bản đó là cùng một loại vấn đề là "Tôi có bộ chuyển đổi để chuyển đổi từ loại A thành loại B; tôi có đặt nó ở gần loại A hoặc loại B không?" - nhưng với không gian tên.Kinh nghiệm của tôi là thường xuyên hơn đầu gãi đi vào suy nghĩ của những điều tốt nhất để làm hơn những vấn đề sẽ được gây ra bằng cách lấy một trong hai cách tiếp cận ...

+0

Chỉ cần tự hỏi tại sao ban đầu không được coi là "System.Linq.Xml" thay vì "System.Xml.Linq" , đối với tôi nó trông rõ ràng hơn – sll

+0

Nó có thể tồn tại trong assembly 'System.Xml', chứ không phải là' System.Linq'? –

+0

@sllev: Tôi vừa thêm nhận xét vào hiệu ứng đó - về cơ bản đó là một API XML. Bạn sử dụng nó khi bạn muốn làm việc với dữ liệu XML - và nó sẽ hoạt động tốt với LINQ. –

5

Chính xác hơn sẽ là, namespace Simple.OData.Data.

Điều này là do không gian tên Data nên được nhóm với các lớp khác liên quan đến OData.

Nếu bạn đang suy nghĩ cùng với các dòng System.Data, System.Data.SqlClient thì nó khá nhiều vì chúng là một phần của cụm System.Data.dll và là một phần tích hợp của nó. Việc thực hiện của riêng tôi đối với các lớp học IDbCommand etc tồn tại trong không gian tên MyNamespace.SubNamespace.AdoWrapper, nếu điều đó cung cấp cho bạn một số ngữ cảnh.

Trong trường hợp của bạn, Simple.Data lẽ không tồn tại hoặc có nhiều trong nó, không giống như System.Data ..

+0

+1 nhưng sẽ có vẻ lạnh hơn là "không gian tên chính xác hơn Simple.OData.Data sẽ là, trẻ Padawan": p – Kheldar

0

Vâng, đó là, nhưng có một số nhược điểm.

Không gian tên là một phần của tên loại. Tức là, một loại có tên là C bên trong không gian tên A.B, có tên là A.B.C.

Khi bạn sử dụng câu lệnh using, thì bạn chỉ đang sử dụng loại lối tắt .

Nhược điểm:

tôi đã nhận thấy rằng đôi khi Visual Studio có thể trở nên chút nhầm lẫn, Đặc biệt khi sử dụng không gian tên như System, và những người khác mà tồn tại trong khuôn khổ Net ... theo cách như vậy mà bạn phải nhập tên đầy đủ của loại.

0

Nó có thể gây nhầm lẫn cho một số người, nhưng nó không gây ra bất kỳ vấn đề gì. Có thể bạn sẽ cần phải nâng cấp không gian tên mặc dù nếu bạn nhập tên này:

using Simple.Odata; 
using Simple.Data.Odata; 

Nếu không thì trình biên dịch sẽ không nhận ra. Có lẽ một cấu trúc tốt hơn có thể cho điều bạn đang cố gắng tạo, nhưng để anwser câu hỏi của bạn: có nó là ok để làm điều đó nếu bạn muốn.

1

Chắc chắn nó là, nếu nó là đúng ngữ nghĩa. Hãy xem có bao nhiêu không gian tên khung kết thúc trong ví dụ .Design!

0

Phần cuối cùng phải phụ thuộc vào phần trước của không gian tên. Bộ điều hợp của bạn có một sự phụ thuộc với Simple.OData nhưng cũng với Simple.Data. Nhưng kể từ khi Simple.OData ít chung chung tôi muốn một cái gì đó như:

using Simple.Data  

namespace Simple.OData.Adapters 
{ 
    // The Simple.Data adapter for OData 
} 
Các vấn đề liên quan