Die Frage ist rückwärts.
Sie suchen nicht nach einem Grund, eine Funktion nicht öffentlich zu machen. Es ist eine falsche Einstellung, um mit (meiner Meinung nach) zu beginnen. Die Argumentation sollte in die andere Richtung gehen.
Mit anderen Worten - fragen Sie nicht "warum sollte ich es privat machen?". Fragen Sie: "Warum sollte ich es veröffentlichen?"
Im Zweifelsfall nicht aussetzen. Es ist ein bisschen wie Ockhams Rasiermesser - vermehren Sie nicht die Ansprüche, die über die Notwendigkeit hinausgehen.
BEARBEITEN: Adressierung der von @Telastyn in Kommentaren vorgebrachten Gegenargumente (um eine längere Diskussion dort zu vermeiden):
Ich habe das im Laufe der Zeit gehört und mich sogar eine ganze Weile dafür eingesetzt, aber meiner Erfahrung nach sind die Dinge zu privat.
Ja, es ist manchmal mühsam, wenn eine Klasse zur Vererbung geöffnet ist, aber Sie können einige private Methoden (deren Verhalten Sie ändern möchten) nicht überschreiben.
Aber protected
würde ausreichen - und es ist immer noch nicht öffentlich.
Es führt zu einer Menge Code-Duplizierung und Overhead, um auf "Dinge, die nicht öffentlich sein sollten" zuzugreifen, auf die jedoch indirekt zugegriffen wird.
Wenn es problematisch wird, machen Sie es einfach öffentlich! Es gibt die Notwendigkeit, über die ich gesprochen habe :)
Mein Punkt ist, dass Sie es nicht nur für den Fall tun sollten (YAGNI und alle).
Beachten Sie, dass es immer einfacher ist, eine private Funktion öffentlich zu machen, als sie in den Datenschutz zurückzuziehen. Letzteres wird wahrscheinlich den vorhandenen Code beschädigen.