คำถามย้อนหลัง
คุณไม่ได้หาเหตุผลที่จะทำให้ฟังก์ชั่นที่ไม่ใช่แบบสาธารณะ มันเป็นความคิดที่ไม่ถูกต้องที่จะเริ่มต้นด้วย (ในความคิดของฉัน) เหตุผลควรไปในทางอื่น
กล่าวอีกนัยหนึ่ง - อย่าถามว่า "ทำไมฉันถึงทำให้เป็นส่วนตัว?" ถาม: "ทำไมฉันถึงต้องเปิดเผยสู่สาธารณะ"
เมื่อมีข้อสงสัยอย่าเปิดเผย มันเป็นเหมือนมีดโกนของ Ockham - อย่ามีสิทธิ์ทวีคูณเกินความจำเป็น
แก้ไข:การตอบโต้การโต้เถียงที่นำเสนอโดย @Telastyn ในความคิดเห็น (เพื่อหลีกเลี่ยงการอภิปรายเพิ่มเติมที่นั่น):
ฉันเคยได้ยินเรื่องนี้เมื่อเวลาผ่านไปและแม้กระทั่งดำเนินการในบางเวลา แต่จากประสบการณ์ของฉันสิ่งต่าง ๆ มีแนวโน้มที่จะเป็นส่วนตัวเกินไป
ใช่มันเป็นความเจ็บปวดในบางครั้งถ้าคลาสเปิดสำหรับการสืบทอด แต่คุณไม่สามารถแทนที่วิธีส่วนตัวบางอย่าง (ซึ่งมีพฤติกรรมที่คุณต้องการแก้ไข)
แต่protected
จะพอเพียง - และก็ยังไม่เป็นสาธารณะ
มันนำไปสู่การทำสำเนารหัสจำนวนมากและค่าใช้จ่ายในการเข้าถึง "สิ่งที่ไม่ควรเป็นสาธารณะ" แต่ยังสามารถเข้าถึงได้ทางอ้อมอย่างไรก็ตาม
ถ้ามันกลายเป็นปัญหาคุณก็แค่เปิดเผยสู่สาธารณะ! มีความจำเป็นที่ฉันพูดถึง :)
ประเด็นของฉันคือคุณไม่ควรทำในกรณี (YAGNI และทั้งหมด)
โปรดทราบว่าการทำให้ฟังก์ชั่นส่วนตัวเป็นสาธารณะนั้นง่ายกว่าการดึงมันกลับไปสู่ความเป็นส่วนตัว หลังมีแนวโน้มที่จะทำลายรหัสที่มีอยู่