Quy ước viết hoa cho các trường được bảo vệ C #


17

Các quy ước viết hoa cho tên trường được bảo vệ trong C # là gì?

Đó là _myVar (như trường riêng) hay MyVar (như thuộc tính)?


3
Bạn có chắc chắn muốn có các trường được bảo vệ không? Hầu hết các lý do cho việc không có các trường công khai cũng áp dụng cho các trường được bảo vệ, vì vậy tôi nghĩ tốt hơn là sử dụng các thuộc tính được bảo vệ thay thế.
Svick

trong các trường hợp thử nghiệm, thông thường sẽ thuận tiện khi có các trường được bảo vệ .. nhưng có lẽ bạn đúng, nó có thể được thay đổi thành thuộc tính. Nhưng nếu tôi muốn một trường được bảo vệ, quy ước đặt tên là gì?
Louis Rhys

2
Bạn có chắc chắn _myVar là quy ước phù hợp cho các lĩnh vực tư nhân? (bạn đang tạo tiền đề cho nó) Không cố gắng bắt đầu một cuộc chiến tôn giáo ở đây, chỉ cố gắng nói rằng nếu bạn chọn một loại quy tắc tùy ý cho các lĩnh vực riêng tư, bạn có thể chọn một quy tắc khác cho các lĩnh vực được bảo vệ của mình. Lời khuyên duy nhất là phải nhất quán.
Marek

Câu trả lời:


13

Có một thứ được gọi là Nguyên tắc Thiết kế để Phát triển Thư viện Lớp được viết bởi Microsoft.

Nó nói như sau:

Không cung cấp các trường mẫu là công khai hoặc được bảo vệ.

Các trường công cộng và được bảo vệ không phiên bản tốt và không được bảo vệ bởi các yêu cầu bảo mật truy cập mã. Thay vì sử dụng các trường hiển thị công khai, hãy sử dụng các trường riêng và hiển thị chúng thông qua các thuộc tính.

Cũng như:

  • Sử dụng vỏ Pascal trong tên trường

  • Không sử dụng tiền tố cho tên trường. Ví dụ: không sử dụng g_ hoặc s_ để phân biệt các trường tĩnh và không tĩnh.

Đối với _tiền tố, nó được sử dụng thường xuyên như this.quy ước (cho đến nay tôi đã thấy mã nguồn duyệt trong CodePlex / GitHub). ReSharper, ví dụ, thúc đẩy _kiểm tra đặt tên của nó.


bạn đã có một chút chọn lọc trong việc không bao gồm "Không sử dụng tiền tố cho tên trường." từ MSDN cùng với quy tắc vỏ Pascal :) Mặc dù đúng là việc chia sẻ lại theo mặc định sẽ thúc đẩy tiền tố _, nếu bạn đang trích dẫn các quy ước MSDN IMHO, bạn không nên trộn chúng với các hiển thị của riêng bạn.
Marek

2
"Phiên bản không tốt" nghĩa là gì? Bạn đang nói rằng vì trường được bảo vệ không được khuyến nghị, nên không có hướng dẫn về tên của nó? Dù sao, Resharper dường như đề nghịMyVar
Louis Rhys

2
@Marek: Tôi đã bao gồm sở thích của riêng tôi. Tôi chỉ đơn giản nói những gì Resharper thích. Và đó không phải là ý định của tôi để chọn lọc. Trả lời cập nhật
jgauffin

1
@jgauffin Ngoài việc người tiêu dùng sử dụng phản ánh đối với mã của bạn, không thay đổi trường thành thuộc tính trong suốt đối với người gọi? Làm thế nào để thay đổi một trường được bảo vệ thành một thuộc tính được bảo vệ có cùng khả năng phá vỡ tính tương thích?
Quantic

1
nó phá vỡ khả năng tương thích nhị phân: msdn.microsoft.com/en-us/l
Library / rt31s3bc (v = vs.71) .aspx
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.