I metodi privati delle classi in JavaScript

I metodi privati sono funzioni definite all'interno di una classe che non sono accessibili direttamente al di fuori di essa. Sono nascosti all'esterno della classe e possono essere invocati solo da altri metodi all'interno della stessa classe. Questo concetto è importante perché consente di nascondere dettagli di implementazione e comportamenti specifici alla classe.

Come dichiarare metodi privati

Per dichiarare metodi privati in JavaScript, usiamo il prefisso "#" prima del nome del metodo. Ad esempio:

class ContoBancario {
	#saldo;

	constructor(saldoIniziale) {
		this.#saldo = saldoIniziale;
	}

	#aggiungiInteresse(tasso) {
		this.#saldo += this.#saldo * tasso;
	}

	deposita(somma) {
		this.#saldo += somma;
		this.#aggiungiInteresse(0.02); // Esempio di chiamata di un metodo privato.
	}

	visualizzaSaldo() {
		return `Il saldo attuale è: $${this.#saldo}`;
	}
}

Nell'esempio sopra, abbiamo dichiarato un campo privato #saldo e due metodi privati: #aggiungiInteresse e #saldo. Questi metodi privati possono essere chiamati solo all'interno della classe ContoBancario.

Accedere ai metodi privati di una classe

Poiché i metodi privati non possono essere invocati direttamente dall'esterno della classe, vengono utilizzati all'interno di metodi pubblici o di altri metodi privati della stessa classe. Questo fornisce un maggiore controllo sull'interazione con i dati interni della classe e contribuisce a prevenire errori e comportamenti indesiderati.

var conto = new ContoBancario(100);
conto.deposita(100);

console.log(conto.visualizzaSaldo());

In questo modo possiamo accedere al metodo privato aggiungiInteresse passando per il metodo deposita.

Vantaggi dei metodi privati

L'uso dei metodi privati offre vari vantaggi:

  • Incapsulamento: nascondere dettagli di implementazione complessi alla classe, consentendo all'esterno di interagire solo con un'interfaccia ben definita.
  • Riduzione dei Bug: poiché i metodi privati sono accessibili solo internamente, si riduce la probabilità di errori dovuti a chiamate accidentali da parte del codice esterno.
  • Manutenibilità: facilita la manutenzione del codice in quanto le modifiche interne alla classe non richiedono la riscrittura del codice esterno che utilizza la classe.
  • Sicurezza: nascondere operazioni sensibili o critiche dalla manipolazione non autorizzata all'esterno della classe.