Вопрос задом наперед.
Вы не ищите причину сделать функцию непубличной. Это неправильное мышление для начала (на мой взгляд). Рассуждения должны идти другим путем.
Другими словами - не спрашивайте «зачем мне делать это приватным?». Спросите: «зачем мне это делать публичным?»
Если есть сомнения, не подвергайте это. Это похоже на бритву Оккама - не умножайте права сверх необходимости.
РЕДАКТИРОВАТЬ: Обращаясь к контраргументам, выдвинутым @Telastyn в комментариях (чтобы избежать расширенного обсуждения там):
Я слышал это со временем и даже поддерживал это в течение довольно долгого времени, но по моему опыту, вещи, как правило, слишком приватны.
Да, иногда бывает больно, если класс открыт для наследования, но вы не можете переопределить некоторые частные методы (поведение которых вы хотите изменить).
Но protected
было бы достаточно - и это все еще не публично.
Это приводит к значительному дублированию кода и накладным расходам на «вещи, которые не должны быть публичными», но к которым в любом случае обращаются косвенно.
Если это становится проблематичным, то просто сделайте это публичным! Есть необходимость, о которой я говорил :)
Я хочу сказать, что вы не должны делать это на всякий случай (YAGNI и все).
Обратите внимание, что сделать приватную функцию общедоступной всегда проще, чем вернуть ее обратно в частную жизнь. Последнее, вероятно, нарушит существующий код.