Trong Visual Studio 2008 Team System, tôi vừa chạy Phân tích mã (từ trình đơn Phân tích) trên một trong các dự án C# của tôi. Một trong những cảnh báo được tạo ra như sau:Trường C# được bảo vệ thành riêng tư, thêm thuộc tính - tại sao?
Microsoft.Design: Vì trường 'Connection._domain' hiển thị ở chế độ riêng tư và thêm thuộc tính, với khả năng truy cập tương tự như hiện tại, để cung cấp quyền truy cập vào trường đó.
Nó đề cập đến các lĩnh vực sau:
public abstract class Connection
{
protected string _domain;
}
Tôi không hiểu lý do đằng sau sự gợi ý. Đây là những gì tôi nghĩ rằng nó muốn tôi phải làm:
public abstract class Connection
{
private string _domain;
protected string Domain { get { return _domain; } set { _domain = value; } }
}
Hai câu hỏi:
- Tôi đã hiểu một cách chính xác những gì các gợi ý muốn tôi làm, mã khôn ngoan?
- Tại sao tôi muốn tôi làm điều này?
Xem thêm http://stackoverflow.com/questions/1410645/are-public-fields-ever-ok, http://stackoverflow.com/questions/480627/why-wont-anyone-accept-public-fields -in-c, http://stackoverflow.com/questions/1277572/should-i-use-public-properties-and-private-fields-or-public-fields-for-data và một vài mục khác (tìm kiếm trên 'công khai lĩnh vực'). Tất cả đều thảo luận về lĩnh vực công cộng nhưng thường áp dụng cho các lĩnh vực được bảo vệ là tốt. –