Có rất nhiều điều để nói để trả lời cho câu hỏi này, đây là những suy nghĩ đầu tiên nảy ra trong đầu tôi:
Đầu tiên và quan trọng nhất, hãy nhớ rằng đó private
chỉ là một cấu trúc thời gian biên dịch - nó không thể được thực thi trong thời gian chạy (xem ở đây và ở đây để thảo luận liên quan). Do đó, vui lòng vô hiệu hóa bản thân bất kỳ quan niệm nào về private
việc hữu ích theo bất kỳ cách nào cho mục đích bảo mật. Đó đơn giản không phải là những gì nó nói.
Đó là về tính đóng gói và khi bạn có một trường hoặc phương thức trên thành phần của mình mà bạn muốn đóng gói trong đó, hãy làm rõ rằng nó không nên được truy cập từ bất kỳ nơi nào khác, thì bạn hoàn toàn nên làm cho nó private
: Đó là những gì private
dành cho: Nó báo hiệu ý định của bạn rằng bất cứ thứ gì bạn đã đặt nó lên không nên được chạm vào từ bên ngoài lớp học.
Điều tương tự cũng xảy ra public
: Nó cũng là một cấu trúc chỉ thời gian biên dịch, vì vậy thực tế là các thành viên lớp public
theo mặc định, trong khi đúng, có ý nghĩa chính xác bằng không trong thời gian chạy. Nhưng khi bạn có một thành viên mà bạn có ý định phơi bày rõ ràng với thế giới bên ngoài như một phần của API của lớp, bạn hoàn toàn nên làm cho nó public
để báo hiệu ý định này: Đó là điều public
dành cho.
Điều này có thể áp dụng cho tất cả các loại chữ nói chung. Cụ thể, trong Angular, chắc chắn có các trường hợp sử dụng hợp lệ để có các thành viên công khai trên các lớp thành phần: Ví dụ: khi triển khai mẫu vùng chứa / thành phần (hay còn gọi là thông minh / câm ), với những đứa trẻ "câm" tiêm cha mẹ "thông minh" thông qua phương thức tiêm hàm tạo, Điều cực kỳ quan trọng là phải truyền đạt ý định của bạn về những điều mà các thành viên trong nhóm cha mẹ nên và không nên để trẻ chạm vào: Nếu không, đừng ngạc nhiên khi bạn bắt gặp những đứa trẻ ngu ngốc đó đang lừa xung quanh tủ rượu của cha mẹ chúng.
Vì vậy, câu trả lời của tôi cho câu hỏi của bạn:
Tôi có nên luôn thêm private cho tất cả chúng như bên dưới không?
là một không . Không phải lúc nào bạn cũng nên thêm private
vào bởi vì khi làm như vậy bạn đánh bại mục đích của từ khóa, bởi vì nó không còn báo hiệu bất kỳ ý định nào nếu bạn đặt nó ở mọi nơi: Bạn cũng có thể không đặt nó ở bất kỳ đâu.