mrenvis
Senior Member
Theo quy tắc đóng gói trong OOP thì bất kỳ object nào sở hữu những internal attr thì đều nên tạo 1 interface với các logic để access/modify giá trị của nó. Điều này đặc biệt quan trọng khi những object của bạn được implement với những business logic và việc quản lý giá trị các attr này đóng vai trò quan trọng trong các flow của chương trình. Còn nếu bạn chắc chắn rằng các object khác khi access vào attr của 1 object chỉ dưới dạng read-only thì việc để attr đó là public cũng là chấp nhận được, tuy nhiên nếu sau này khi requirement thay đổi thì bạn cũng sẽ phải định nghĩa lại những object này và tất cả những logic của các object khác có access đến các attr của những object này. Việc follow các quy tắc trong OOP chính là để giảm effort của lập trình viên bằng cách định nghĩa 1 khuôn mẫu rõ ràng các quy tắc lập trình để các dev khi collaborate với nhau đều có chung 1 mindset và giảm thiểu các negative impact mỗi khi requirement thay đổi. Việc set public attr lúc bắt đầu code thì có thể tiện thât đấy nhưng về sau nó sẽ tạo technical debt cho bạn, nhất là khi xây dựng 1 hệ thống phức tạp và involve nhiều dev.Biết là nguyên tắc OOP thì các att nên để private và dùng hàm set get để access.
Nhưng thực tế là có phải Object nào cũng cần như vậy ko hay chỉ các astract class, interface class thôi. tại thực tế mình thấy code toàn public ầm ầm.