La domanda è indietro.
Non cerchi un motivo per rendere una funzione non pubblica. È una mentalità sbagliata per cominciare (secondo me). Il ragionamento dovrebbe andare dall'altra parte.
In altre parole - non chiedere "perché lo renderei privato?". Chiedi: "perché dovrei renderlo pubblico?"
In caso di dubbio, non esporlo. È un po 'come il rasoio di Ockham - non moltiplicare i titoli oltre la necessità.
EDIT: affrontare i controguardi portati da @Telastyn nei commenti (per evitare discussioni estese):
I've heard that over time, and even espoused it for quite some time,
but in my experience, things tend to be too private.
Sì, a volte è un dolore se una classe è aperta per ereditarietà, ma non puoi sovrascrivere alcuni metodi privati (il cui comportamento ti piacerebbe modificare).
Ma protected
sarebbe sufficiente - ed è ancora non pubblico.
It leads to a lot
of code duplication and overhead to get at "things that shouldn't be
public" yet are accessed indirectly anyways.
Se diventa problematico, rendilo semplicemente pubblico! C'è la necessità di cui stavo parlando :)
Il mio punto è che non dovresti farlo nel caso (YAGNI e tutti).
Tieni presente che è sempre più semplice rendere pubblica una funzione privata rispetto a quella precedente. È probabile che quest'ultimo rompa il codice esistente.