Từ những gì tôi hiểu, bộ định tính global::
cho phép bạn truy cập vào một không gian tên đã bị ẩn bởi một tên khác có cùng tên. Ví dụ: MSDN page sử dụng System
làm ví dụ. Nếu bạn tạo không gian tên riêng của mình System
, bạn có thể truy cập thư gốc với global::System
. Điều đầu tiên xuất hiện trong đầu là, tại sao mọi người lại gọi tên miền của họ là System
?? Trang tiếp tục nói điều này rõ ràng là không nên, nhưng sao chép không gian tên là rất có thể trong các dự án lớn. Nếu/khi điều này xảy ra, có phải đó là dấu hiệu cho thấy mọi thứ đang đi sai hướng hoặc có lý do hợp lệ để có xung đột không gian tên không?Việc sử dụng toàn cục :: cho các không gian tên xung đột
Trả lời
Một lý do chính đáng cho việc xung đột không gian tên có thể là sử dụng thư viện nội bộ được viết cho các phiên bản trước đó của .Net không chứa chức năng được thêm vào trong các phiên bản sau. Trong ví dụ .Net 1.1 ngày, tôi đã viết một lớp Registry bao bọc các cuộc gọi đăng ký API. Cơ hội thuần túy, tên của phương thức mà tôi chọn giống hệt với tên của lớp Registry .Net, và chúng cũng giống hệt như vậy, vì vậy rất dễ rút mã nguồn của tôi. Đối với các công cụ phức tạp hơn, có thể sử dụng đoạn mã cũ hơn, có tên kém với bộ định tính global::
có thể hữu ích.
Cố ý đặt tên cho một đoạn mã mới bằng cách sử dụng không gian tên .Net hiện tại chắc chắn sẽ là một mã nguồn.
Nói chung, global::
được sử dụng để cho biết "Tôi muốn bắt đầu ở đầu cấu trúc không gian tên". Nếu tôi có một không gian tên gọi là MyProduct.System
thì mọi thứ nằm trong không gian tên MyProduct
sẽ không thể truy cập vào không gian tên Microsoft System
. Đó là một mùi mã? Có thể đôi khi, nhưng không phải là đặc biệt là có mùi.
Bất kỳ mã nào do máy tạo ra đều nên thử và sử dụng global::
để giảm thiểu khả năng xung đột không gian tên mà nó có thể không biết. Hơn nữa, bất kỳ mã nào của bạn có thể chạy vào xung đột đều có thể sử dụng nó để cụ thể hơn.
Tôi nghĩ thỉnh thoảng điều này xảy ra khi một trong các không gian tên của bạn có tên khác. Ví dụ, tôi có một không gian tên .Persistence.NHibernate, nơi NHibernate cũng có thể là không gian tên gốc của hội đồng NHibernate.
Tôi không thấy bất kỳ mã mùi ở đây, nó chỉ đặt tên isses;)
Microsoft có một số hướng dẫn namespace tốt trong cuốn sách tuyệt vời Framework Design Guidelines 2nd Ed.
. Nói chung, họ khuyên bạn nên chống lại việc giới thiệu comflicts (ví dụ, bằng cách đặt tên cho loại Stream của bạn).
Tôi không tin rằng tôi đã từng sử dụng trình độ chuẩn :: toàn cầu. Tôi thường sẽ xem xét nó một mùi mã (mặc dù có những ngoại lệ, như MusiGenesis và sixlettervariables chỉ ra).
- 1. Xung đột giữa không gian tên và xác định
- 2. Xung đột không gian tên và lớp học (?)
- 3. Xung đột Enum và Xung đột đặt tên thuộc tính
- 4. Django tên mẫu xung đột
- 5. GCC tên hàm xung đột
- 6. Các xung đột đặt tên trong các định nghĩa AngularJS
- 7. xung đột đặt tên hàm
- 8. SVN đánh dấu toàn bộ các tệp là xung đột
- 9. Xung đột đặt tên và thuộc tính
- 10. Groovy MarkupBuilder tên xung đột
- 11. Xung đột Git (đổi tên/đổi tên)
- 12. Ngăn chặn xung đột có tên là
- 13. git tìm thấy số xung đột/danh sách xung đột trong thư mục làm việc
- 14. SuppressMessage cho toàn bộ Không gian tên
- 15. Làm thế nào để bạn giải quyết. Không gian tên Net xung đột với từ khoá 'sử dụng'?
- 16. Giải quyết xung đột tên lớp trong ứng dụng Rails
- 17. "sử dụng không gian tên" cho các bình luận Doxygen
- 18. Cách tránh xung đột tên khi soạn đối tượng
- 19. WSImport tạo ra các XMLTypes xung đột cho nhiều
- 20. Jquery không có xung đột
- 21. Tránh xung đột khi sử dụng git-svn
- 22. Sử dụng các không gian tên PHP
- 23. Xung đột jQuery & Prototype
- 24. TortoiseSVN báo cáo xung đột, nhưng không xung đột nào có thể được tìm thấy
- 25. Xung đột GITHUB Giải quyết
- 26. Làm cách nào để sử dụng git difftool cho các xung đột hợp nhất khác?
- 27. Cách tránh các xung đột tên trong các tiện ích JavaScript
- 28. Xung đột: lỗi xung đột cơ sở dữ liệu
- 29. Giải quyết các xung đột Git Svn
- 30. Giải quyết xung đột Git bằng các tệp nhị phân
Có mùi mã tốt không? : p –
@rpflo: Có lẽ anh ta có nghĩa là "đây có phải là mùi mã nghiêm trọng không?" –
Ngược lại với mã tốt, có mùi như hoa tử đinh hương. :) –