Tôi đang đọc cuốn sách "Mã sạch" và đang đấu tranh với một khái niệm. Khi thảo luận về các đối tượng và cấu trúc dữ liệu, nó nêu rõ các điều sau:Mã sạch: Các đối tượng có thuộc tính công khai không?
- Đối tượng ẩn dữ liệu của họ sau abstractions và hiển thị các chức năng hoạt động trên dữ liệu đó.
- Cấu trúc dữ liệu hiển thị dữ liệu của chúng và không có chức năng có ý nghĩa.
Vì vậy, những gì tôi nhận được từ điều này là tôi không nên có bất kỳ thuộc tính công khai nào trên đối tượng của mình, tôi chỉ nên có phương thức thực hiện các thao tác trên thuộc tính. Nếu tôi cần truy cập các thuộc tính, chúng phải có cấu trúc dữ liệu, có thể được trả về từ một phương thức trên đối tượng của tôi? Với cách tiếp cận này, có vẻ như tôi sẽ cần phương thức GetHeight() và SetHeight() cho thuộc tính Chiều cao của tôi trên đối tượng của tôi, thay vì chỉ sử dụng lấy và đặt thuộc tính.
Có lẽ tôi không hiểu chính xác những gì đang được đề xuất, nhưng đây là hiểu biết của tôi về "Đối tượng ẩn dữ liệu của họ". Nếu bạn có thể giúp tôi hiểu điều này, tôi rất cảm kích!
Cảm ơn trước!
Để thêm vào các câu trả lời dưới đây, sự nhầm lẫn có thể xuất phát từ thực tế là nhiều ngôn ngữ không hỗ trợ tài sản. Trong trường hợp này, bạn có một sự lựa chọn giữa các phương thức accessor và các trường công cộng, và sự lựa chọn đúng luôn là các phương thức accessor. C# không có vấn đề này, vì nó hỗ trợ các thuộc tính. –