2010-09-01 4 views
6

suốt Silverlight và WPF, tài sản có giá trị boolean được bắt đầu với (almost all), ví dụ:IsEnabled hoặc Enabled?

IsEnabled
IsTabStop
IsHitTestVisible

Trong tất cả các khuôn khổ khác của Microsoft (winforms, BCL, ASP.NET) không được sử dụng. Điều gì đã khiến nhóm của họ phải rời bỏ khỏi quy ước đặt tên ban đầu - đó có phải là một sự tiến hóa hay một cái tên bỏ lỡ phải gắn bó?

Trả lời

13

Cá nhân, tôi luôn cố gắng thêm tiền tố các giá trị boolean với một cái gì đó bổ sung thêm một chút ý nghĩa (là, có, có thể, v.v.). sử dụng của tôi xuất phát từ chủ trương của Microsoft sau đây:

tên Đỗ thuộc tính Boolean với một cụm từ khẳng định (CanSeek thay vì CantSeek). Tùy chọn, bạn cũng có thể tiền tố Thuộc tính Boolean với Is, Có thể, hoặc Có, nhưng chỉ khi nó thêm giá trị.

MSDN - Names of Type Members

Tôi không tin điều này là luôn luôn như vậy Đây không phải luôn luôn như vậy. Những thực hành ngày trở lại .NET 2.0. Trước đó, mọi thứ là trò chơi công bằng. Tuy nhiên, việc dọn dẹp các tên này trong các phiên bản mới hơn của Framework sẽ gây ra tất cả các loại nhức đầu (do đó một số mã khung sử dụng quy ước và một số không).

Nó chắc chắn làm cho mọi thứ dễ đọc hơn. Ngay cả khi sử dụng một ví dụ từ câu hỏi của bạn. Bạn muốn cái nào hơn?

// ambiguous naming, could mean many things 
myTab.TabStop 

hoặc

// definitely a true/false value 
myTab.IsTabStop 
+1

Đó là thú vị đó là một khuyến nghị mới, giải thích nhất của winforms không có tiền tố Is. –

+1

@Chris S - Thật khó để có được mọi thứ ngay từ lần đầu tiên. Đây có thể là một trong những bài học kinh nghiệm từ .NET 1/1.1 –

+0

Đối với TabStop, "Is" thêm giá trị rõ ràng: giá trị của thuộc tính cho bạn biết liệu có điều gì đó là một điểm dừng tab hay không; giá trị không phải là chính tab dừng. Đối với Enabled, giá trị gia tăng là tinh tế hơn. "Có" ở đây phân biệt giữa cho dù một cái gì đó được kích hoạt và một "kích hoạt", bất cứ điều gì mà có thể, có thể là một bản sao được kích hoạt đối tượng. Một giá trị gia tăng khác là đối tượng đọc giống như tiếng Anh: myObject.IsEnabled. –

3

Tiền tố Is có thể gợi ý thực tế rằng thuộc tính chỉ có một người truy cập get và, như Thomas và Rachel nói, đó là một bool. Bỏ qua tiền tố nếu bạn dự định triển khai cả hai kiểu truy nhập getset và loại của nó không phải là bool.

+5

Tôi sẽ không đồng ý, tôi biết tôi đã thiết lập IsEnabled trên một số đối tượng trước đây. Đó có thể là vì nó là một giá trị boolean và không phải cái gì bạn có thể đặt cho bất kỳ giá trị nào. – Rachel

+5

Tôi có xu hướng đồng ý với giải thích đó, nhưng nhiều thuộc tính đọc/ghi trong WPF có tiền tố này ...Tôi nghĩ rằng nó là khá dự định để cho thấy rằng tài sản là một bool –

+0

@ Thomas và Rachel - trong thực tế đó là những gì tôi muốn nói, nhưng tôi quản lý để phần nào viết cái gì khác :) – devnull

3

Tiền tố Is là một phần của Microsoft Khung Hướng dẫn thiết kế chính thức (điều này không có nghĩa là tất cả các sản phẩm MS tuân theo nó ...).

Cá nhân tôi thấy hữu ích nếu được sử dụng nhất quán. Nó ngay lập tức cho bạn biết rằng một thuộc tính là một Boolean. Bạn có thể sử dụng nó hay không, điều quan trọng nhất là phải nhất quán về nó ...

Thomas