Câu hỏi ngược.
Bạn không tìm kiếm một lý do để làm cho một chức năng không công khai. Đó là một suy nghĩ không chính xác để bắt đầu (theo ý kiến của tôi). Lý luận nên đi theo con đường khác.
Nói cách khác - đừng hỏi "tại sao tôi lại đặt nó ở chế độ riêng tư?". Hỏi: "tại sao tôi sẽ công khai nó?"
Khi nghi ngờ, đừng phơi bày nó. Nó giống như dao cạo của Ockham - không nhân lên nhiều quyền lợi cần thiết.
EDIT: Giải quyết các phản biện được đưa ra bởi @Telastyn trong các bình luận (để tránh thảo luận mở rộng ở đó):
Tôi đã nghe điều đó theo thời gian và thậm chí đã tán thành nó khá lâu, nhưng theo kinh nghiệm của tôi, mọi thứ có xu hướng quá riêng tư.
Có, đôi khi thật đau đớn nếu một lớp được mở để thừa kế, nhưng bạn không thể ghi đè một số phương thức riêng tư (hành vi mà bạn muốn thay đổi).
Nhưng protected
sẽ đủ - và nó vẫn không công khai.
Nó dẫn đến rất nhiều sự trùng lặp mã và chi phí để có được "những thứ không nên công khai" dù sao cũng được truy cập gián tiếp.
Nếu nó trở thành vấn đề, sau đó chỉ cần làm cho nó công khai! Có sự cần thiết tôi đã nói về :)
Quan điểm của tôi là bạn không nên làm điều đó trong trường hợp (YAGNI và tất cả).
Lưu ý rằng việc đặt chức năng riêng tư luôn dễ dàng hơn là kéo nó trở lại quyền riêng tư. Cái sau có khả năng phá vỡ mã hiện có.