Питання назад.
Ви не шукаєте причини зробити функцію непублічною. Починати з (на мою думку) неправильного мислення. Міркування повинні йти іншим шляхом.
Іншими словами - не запитуйте "чому я ставлю це приватним?" Запитайте: "навіщо я оприлюднюю це?"
Якщо ви сумніваєтесь, не піддавайте цього. Це схоже на бритву Оккама - не примножуйте право за межі необхідності.
EDIT: Розгляд контраргументів, викладених @Telastyn у коментарях (щоб уникнути розширеної дискусії там):
Я чув це з часом і навіть підтримував це досить довгий час, але, на мій досвід, речі, як правило, занадто приватні.
Так, іноді це біль, якщо клас відкритий для спадкування, але ви не можете перекрити деякі приватні методи (поведінку яких ви хочете змінити).
Але protected
вистачило б - і це все ще не публічно.
Це призводить до багато дублювання коду і накладних витрат, щоб отримати "речі, які не повинні бути загальнодоступними", але доступ до них все одно є побічно.
Якщо це стане проблематичним, то просто оприлюднити його! Є необхідність, про яку я говорив :)
Моя думка, що ви не повинні робити це на всякий випадок (YAGNI та всі).
Зауважте, що завжди простіше зробити приватну функцію загальнодоступною, ніж повернути її до конфіденційності. Останній, ймовірно, порушить існуючий код.