Come studente in programmazione, ho imparato che l'incapsulamento è uno dei principi più importanti della programmazione orientata agli oggetti.
Tuttavia, seguo questo principio solo quando ritengo che sia adatto al mio scopo. A volte lascio le variabili di classe interne pubbliche se sono intese per essere letti direttamente in un dato momento e usano solo cose come setter e getter quando ci sono calcoli effettivi (e assegnazioni di altre variabili) coinvolti nell'assegnazione / valutazione di una variabile (ad esempio , una getDegrees()
di una classe Angle
che memorizza solo i radianti internamente).
Se trovo che una procedura eseguita con una classe implichi molte modifiche delle variabili interne e sia facilmente raggruppabile in una singola operazione, la inserirò in una funzione della classe piuttosto che avere il codice esterno chiama più funzioni più piccole . Tuttavia, non lo imporrò sempre nell'interfaccia rendendo invece private le variabili interessate.
Sto violando qualche principio facendo questo? Se sì, quanto severamente? Il codice che fa questo in genere non è rivolto verso l'esterno, poiché presta molta attenzione a come viene elaborato l'input fuori programma.