L'autore ha fornito un semplice esempio che, per la sua semplicità, potrebbe rendere più difficile comprendere l'importanza dei metodi privati.
I metodi privati sono un modo in cui puoi incapsulare e abbattere il comportamento di un dato oggetto senza esporlo all'esterno.
Diciamo che abbiamo un oggetto di tipo Person
:
public class Person
{
public string Name {get; set;}
public int Age {get; set;}
}
In quanto sopra, non c'è nulla che mi impedisca di creare una persona con un'età negativa:
Person p = new Persion() {Name = "Bob", Age = -1}
Potrei avere un metodo per garantire che l'età sia compresa in un intervallo di intervalli stabiliti.
public class Person
{
private int age;
public string Name {get; set;}
public int Age {get {return this.age}; set {this.ValidateAge(value);}
public void ValidateAge(int age) { if(age > 0) this.age = age; }
}
Il problema ora è che ho un metodo ValidateAge
esposto a chi ha mai consumato la classe Person
. Questo espone un meccanismo interno della classe e fornisce anche un modo a qualcuno di modificare i dati interni della classe senza passare attraverso la proprietà appropriata, interrompendo così l'incapsulamento.
Rendere il metodo privato lo nasconderà ai chiamanti esterni, offrendo così un controllo migliore su come e quando vengono modificate le proprietà.