2012-03-29 35 views
13

Các naming convention for constants in C# là Pascal vỏ:Đặt tên hằng Windows API trong C#

private const int TheAnswer = 42; 

Nhưng đôi khi chúng ta cần phải đại diện cho các hằng số đã tồn tại từ API Windows.

Ví dụ, tôi không biết làm thế nào để đặt tên này:

/// <summary> 
/// With this style turned on for your form, 
/// Windows double-buffers the form and all its child controls. 
/// </summary> 
public const int WS_EX_COMPOSITED = 0x02000000; 

nên tôi đặt tên cho nó?

Giữ nó là WS_EX_COMPOSITED cho phép tôi liên kết nhanh chóng với the WinAPI, nhưng không đúng.

Một số tùy chọn:

  • WsExComposited- Quá hungarian
  • Composited- Quá ngắn
  • WsEx enum với Composited trong đó - Vẫn hungarian
  • ExtendedWindowsStyles.Composited- Nhược điểm tant trong một lớp học? Enum?

Cần lưu ý rằng các mục tiêu cho một cách đặt tên tốt là:

  • Nó phải là có thể đọc được.
  • Nó không được kích hoạt FxCop và StyleCop, ngay cả khi điều đó có nghĩa là ẩn nó khỏi chúng.
+13

IMO, tôi nghĩ rằng không tuân theo nguyên tắc hoàn toàn ổn trong tình huống này. Lời bình luận tóm tắt và tính năng WinAPI-ishness trắng trợn của nó là đủ tốt để rời bỏ nó - hầu hết mọi người sẽ hiểu.Nếu bạn * phải * chọn một định dạng, tôi nghĩ rằng tôi thích 'ExtendedWindowStyles.Composited' như là một hằng số trong một lớp nhất. –

+1

Làm thế nào nó có thể được * quá * hungarian? –

+0

@Cory Vì vậy, bạn nói tôi nên thay thế trang trí những thứ như thế này để FxCop và StyleCop không phàn nàn? –

Trả lời

14

WS_EX_COMPOSITED hoàn toàn tốt cho một phần giao diện trực tiếp với Win API (hoặc bất kỳ API được ghi tài liệu nào khác cho vấn đề đó). Phần mà bạn muốn phơi bày nên tuân thủ các quy ước tiêu chuẩn - có mặt tiền công cộng riêng biệt để gọi các hàm gốc với các tên phương thức tốt (cuối cùng bạn sẽ quên những gì bạn đã nghiên cứu về các kết hợp cờ cụ thể). bạn sử dụng nó).

Lợi ích phụ của việc giữ tên càng gần càng tốt đối với API gốc là bạn có thể tìm kiếm liên tục trực tiếp trong tài liệu MSDN/khác và tìm câu trả lời ngay lập tức. Sẽ khó hơn nếu bạn đổi tên nó.

+0

Đó là lý do chính xác tôi cảm thấy tôi không nên đổi tên nó. Tôi tin là bạn đúng. –

0

Có thể this sẽ giúp khách truy cập mới bằng câu hỏi này.

Nếu trường hoặc tên biến được dự định khớp với tên của mục được liên kết với Win32 hoặc COM và do đó cần bắt đầu bằng dấu gạch dưới, hãy đặt trường hoặc biến trong lớp NativeMethods đặc biệt. Một lớp NativeMethods là bất kỳ lớp nào có chứa một tên kết thúc bằng NativeMethods, và được dự định như một trình giữ chỗ cho các trình bao bọc Win32 hoặc COM. StyleCop sẽ bỏ qua vi phạm này nếu mục được đặt trong lớp NativeMethods.

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