Số lượng các lớp học trong một không gian tên - Mùi mã?


11

Tôi có một thư viện C # được sử dụng bởi một số tệp thực thi. Chỉ có một vài không gian tên trong thư viện và tôi chỉ nhận thấy rằng một trong những không gian tên đó có khá nhiều lớp trong đó. Tôi luôn tránh có quá nhiều lớp trong một không gian tên duy nhất vì phân loại và vì trong tiềm thức, tôi nghĩ rằng nó trông "đẹp hơn" để có một hệ thống phân cấp không gian tên sâu hơn.

Câu hỏi của tôi là: có ai khác coi nó là "mùi mã" khi một không gian tên có nhiều lớp - ngay cả khi các lớp có liên quan với nhau không? Bạn sẽ nỗ lực rất nhiều để tìm ra sắc thái trong các lớp cho phép phân loại?


8
Nếu các lớp thuộc không gian tên nói không. Thiết kế là chủ quan bởi bản chất của nó vì vậy thật khó để nói và là vấn đề ưu tiên như bạn đã xác định.
Chris

WhatCer StyleCop nói là luật. Tôi cá là nó sẽ không thích nó.
Công việc

2
Xác định "khá nhiều". 10? 100? 1000?
Eric King

Câu trả lời:


7

Không cần thiết. Nếu tất cả các lớp thực sự thuộc về thể loại được xác định bởi không gian tên, thì tốt thôi.

Những gì bạn có thể làm là xem xét các lớp và suy nghĩ về khả năng hợp nhất một số trong số chúng. Cũng có thể là các nhóm nhỏ của các lớp đó hỗ trợ chức năng "gia đình" nhưng được triển khai riêng vì một số lý do lịch sử. Bây giờ khi đủ thời gian đã trôi qua, một sáng tác tốt hơn có thể có thể.


6

Bạn nên tránh có quá nhiều không gian tên vì điều này làm cho thư viện khó sử dụng và điều hướng hơn cho lập trình viên. Ngoài ra, với nhiều không gian tên, nó có thể trở thành một thách thức đối với người thiết kế để cung cấp tên chính xác cho từng không gian tên và cũng để quyết định không gian tên nào mà một lớp cụ thể nên thuộc.

Cách đơn giản nhất phía trước là đặt tất cả các lớp chính vào một không gian tên duy nhất, nhét bất kỳ lớp kịch bản nâng cao nào vào không gian tên phụ; .NET Framework thực hiện việc này mọi lúc, xem System.CollectionsSystem.Collections.Specializedcho các ví dụ tốt về thực hành này.

Chỉ với một hoặc hai không gian tên cấp đầu tiên, mã của bạn sẽ trở nên dễ điều hướng hơn, với các lớp nâng cao hoặc chuyên biệt của bạn được ẩn đi cho đến khi lập trình viên sẵn sàng khám phá như vậy.


3

Miễn là chúng thuộc về nhau và liên quan đến nhau thì không có vấn đề gì với việc có quá nhiều lớp trong một không gian tên.

Việc một lớp có thuộc không gian tên riêng của nó hay không là vấn đề sở thích cá nhân.

Cái gì trông tự nhiên hơn?

Parsers.XML.XmlParser.cs
Parsers.XmlParser.cs

Nó hoàn toàn phụ thuộc vào cách bạn muốn xem và gọi mã của bạn.

Cá nhân, tôi thích không gian tên riêng chỉ khi tôi biết sẽ có nhiều hơn một lớp duy nhất thuộc về nó.


0

Điều này là tốt Lý do chính để có không gian tên là để tránh xung đột tên và chỉ sau đó chúng ta nên nghĩ về phạm vi logic, đó là vấn đề lựa chọn cá nhân hơn là quy tắc. Tất nhiên một số quy tắc hợp lý được chào đón. Không ai muốn cuộn qua các lớp 3k ~ 4k trong một không gian tên.

Một ví dụ điển hình là không gian tên std trong Thư viện chuẩn C ++ cho phép bạn tách các thuật toán của riêng bạn khỏi các thuật toán tiêu chuẩn.


-1. Sự va chạm tên là quan trọng, nhưng việc phân nhóm khái niệm của các lớp nó cũng quan trọng.
umlcat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.