सवाल पीछे की तरफ है।
आप किसी फ़ंक्शन को गैर-सार्वजनिक करने के लिए किसी कारण की तलाश नहीं करते हैं। यह (मेरी राय में) के साथ शुरू करने के लिए एक गलत मानसिकता है। तर्क को दूसरे रास्ते पर जाना चाहिए।
दूसरे शब्दों में - "मैं इसे निजी क्यों बनाऊंगा?" मत पूछो। पूछें: "मैं इसे सार्वजनिक क्यों करूंगा?"
जब संदेह हो, तो उसे उजागर न करें। यह ओखम के रेजर की तरह है - आवश्यकता से अधिक गुणा नहीं करता है।
संपादित करें: टिप्पणियों में @Telastyn द्वारा लाए गए प्रतिवादों को संबोधित करना (वहां विस्तारित चर्चा से बचने के लिए):
मैंने सुना है कि समय के साथ, और यहां तक कि काफी समय तक इसकी जासूसी की, लेकिन मेरे अनुभव में, चीजें बहुत निजी होती हैं।
हां, यह कभी-कभी दर्द होता है यदि वंशानुक्रम के लिए एक वर्ग खुला है, लेकिन आप कुछ निजी तरीकों (जिनके व्यवहार को आप बदलना चाहते हैं) को ओवरराइड नहीं कर सकते।
लेकिन protected
पर्याप्त होगा - और यह अभी भी गैर-सार्वजनिक है।
यह बहुत सी कोड डुप्लीकेशन और ओवरहेड की ओर जाता है जो "उन चीजों को प्राप्त करने के लिए है जो सार्वजनिक नहीं होनी चाहिए" अभी तक अप्रत्यक्ष रूप से किसी भी तरह से एक्सेस की जाती हैं।
यदि यह समस्याग्रस्त हो जाता है, तो बस इसे सार्वजनिक करें! आवश्यकता है कि मैं किस बारे में बात कर रहा था :)
मेरा कहना यह है कि आपको इसे केवल मामले में नहीं करना चाहिए (YAGNI और सभी)।
ध्यान दें कि निजता को वापस खींचकर निजी फ़ंक्शन को सार्वजनिक करना हमेशा आसान होता है। उत्तरार्द्ध मौजूदा कोड को तोड़ने की संभावना है।