ตามที่ระบุไว้โดยผู้อื่นตัวแปรส่วนตัวเป็นสิ่งที่ดีเพื่อหลีกเลี่ยงการพลาดโอกาสนำวัตถุไปสู่สถานะที่ไม่สอดคล้องกันและยากที่จะติดตามข้อบกพร่องและข้อยกเว้นที่ไม่คาดคิด
แต่ในทางกลับกันสิ่งที่คนอื่น ๆ ส่วนใหญ่ไม่สนใจเป็นเรื่องเกี่ยวกับเขตข้อมูลที่มีการป้องกัน
คลาสย่อยที่ขยายจะสามารถเข้าถึงฟิลด์ที่ได้รับการป้องกันได้อย่างเต็มที่ทำให้วัตถุนั้นบอบบางราวกับว่าฟิลด์ดังกล่าวเป็นสาธารณะ แต่ความเปราะบางนั้น จำกัด เฉพาะคลาสที่ขยายตัวด้วยตนเอง (ยกเว้นกรณีที่เปิดเผยฟิลด์ดังกล่าวมากขึ้น)
ดังนั้นฟิลด์สาธารณะจึงถือว่ายากและในวันที่เหตุผลเดียวที่ใช้สำหรับคลาสที่ใช้เป็นพารามิเตอร์การกำหนดค่า (คลาสที่ง่ายมากที่มีหลายฟิลด์และไม่มีตรรกะดังนั้นคลาสจะถูกส่งเป็นพารามิเตอร์อย่างเดียวถึง วิธีการบางอย่าง)
แต่ในทางกลับกันฟิลด์ส่วนตัวลดความยืดหยุ่นของรหัสของคุณให้กับผู้ใช้รายอื่น
ความยืดหยุ่นกับปัญหาข้อดีข้อเสีย:
วัตถุที่โค้ดของคุณในคลาสวานิลลาที่มีเขตข้อมูลที่มีการป้องกันมีความปลอดภัยและเป็นความรับผิดชอบของคุณ แต่เพียงผู้เดียว
ในทางกลับกันวัตถุที่ขยายชั้นเรียนของคุณด้วยเขตข้อมูลที่มีการป้องกันซึ่งถูกยกตัวอย่างโดยผู้ใช้รหัสของคุณเป็นความรับผิดชอบของพวกเขาไม่ใช่ของคุณ
ดังนั้นเขตข้อมูล / วิธีการป้องกันที่ไม่ได้รับการบันทึกไว้อย่างดีหรือหากผู้ใช้ไม่เข้าใจวิธีการใช้เขตข้อมูลและวิธีการดังกล่าวจริง ๆ มีโอกาสที่ดีที่จะก่อให้เกิดปัญหาที่ไม่จำเป็นสำหรับตนเองและคุณ
ในทางกลับกันการทำให้สิ่งส่วนใหญ่เป็นส่วนตัวจะลดความยืดหยุ่นของผู้ใช้และอาจทำให้พวกเขามองหาทางเลือกที่มีการบำรุงรักษาเนื่องจากพวกเขาอาจไม่ต้องการสร้างและรักษาทางแยกไว้เพื่อให้สิ่งต่าง ๆ เกิดขึ้น
ดังนั้นความสมดุลที่ดีระหว่างส่วนบุคคลที่ได้รับการปกป้องและที่สาธารณะคือสิ่งที่สำคัญจริงๆ
ตอนนี้การตัดสินใจระหว่างส่วนตัวกับการป้องกันเป็นปัญหาที่แท้จริง
ควรใช้การป้องกันเมื่อใด
ทุกครั้งที่คุณเข้าใจว่าเขตข้อมูลนั้นมีความยืดหยุ่นสูงรหัสนั้นควรได้รับการป้องกัน ความยืดหยุ่นนั่นคือ: กลายเป็นโมฆะ (โดยที่โมฆะจะถูกตรวจสอบและรับรู้เสมอว่าเป็นสถานะที่ถูกต้องไม่ส่งข้อยกเว้น) ไปจนถึงการมีข้อ จำกัด ก่อนที่จะถูกใช้โดยคลาสของคุณ > = 0, <100 ฯลฯ และได้รับการแก้ไขโดยอัตโนมัติสำหรับค่าสูง / ต่ำ - ไหลโดยมีข้อความเตือนเป็นจำนวนมาก
ดังนั้นสำหรับเขตข้อมูลที่มีการป้องกันคุณสามารถสร้างผู้ทะเยอทะยานและใช้มันได้ (แทนการใช้ตัวแปรฟิลด์อย่างรุนแรง) ในขณะที่ผู้ใช้รายอื่นไม่สามารถใช้มันได้ในกรณีที่พวกเขาต้องการความยืดหยุ่นมากขึ้นในรหัสเฉพาะของพวกเขา : ถ้าพวกเขาต้องการค่าลบให้ทำงานได้ดีในชั้นเรียนที่ขยายเพิ่ม