Pytanie jest odwrócone.
Nie szukasz powodu, aby funkcja była niepubliczna. Na początek jest to niewłaściwy sposób myślenia (moim zdaniem). Rozumowanie powinno pójść w drugą stronę.
Innymi słowy - nie pytaj „dlaczego miałbym to uczynić prywatnym?”. Zapytaj: „dlaczego miałbym to upublicznić?”
W razie wątpliwości nie ujawniaj tego. To trochę jak brzytwa Ockhama - nie rozmnażaj się, ponieważ jest to konieczne.
EDYCJA: Reagowanie na kontrargumenty poruszone przez @Telastyn w komentarzach (aby uniknąć tam długiej dyskusji):
Słyszałem to z czasem, a nawet opowiadałem się za tym od dłuższego czasu, ale z mojego doświadczenia wynika, że sprawy wydają się zbyt prywatne.
Tak, czasem jest to bolesne, jeśli klasa jest otwarta na dziedziczenie, ale nie można przesłonić niektórych metod prywatnych (których zachowanie chciałbyś zmienić).
Ale protected
by wystarczyło - i nadal jest niepubliczne.
Prowadzi to do dużej ilości duplikacji kodu i narzutów, aby dostać się do „rzeczy, które nie powinny być publiczne”, ale i tak są dostępne pośrednio.
Jeśli stanie się problematyczny, po prostu upublicznij go! Jest konieczność, o której mówiłem :)
Chodzi mi o to, że nie powinieneś tego robić na wszelki wypadek (YAGNI i wszystko).
Pamiętaj, że zawsze łatwiej jest upublicznić funkcję prywatną niż cofnąć ją do prywatności. Ten ostatni prawdopodobnie złamie istniejący kod.