PDA

View Full Version : [JAVA]Curiosità su incapsulamenti e protezione


Androidiano93
24-05-2015, 14:33
Salve a tutti, un buon programmatore la prima cosa che impara a fare è incapsulare i campi di una classe. Con metodi accessori (get...()) e mutatori (set...(...)) il codice è più pulito e leggibile. Ma al di fuori della leggibilità, se io ad esempio ho una variabile privata verso la quale non fornisco metodi per accedervi, cosa cambia ad esempio nel farla pubblica, se nel codice che scrivo io poi effettivamente non tento di accedervi mai al di fuori della classe di appartenenza? Se ad esempio ho condivisione spontanea di un progetto con altri utenti, è facile capire le necessità di proteggere certe cose, ma se sono l'unico ad usare il mio codice? Perchè dovrei proteggere qualcosa da me stesso?

pabloski
24-05-2015, 17:12
Ma infatti quel meccanismo non è stato creato per obbligare/torturare il programmatore, bensì per fornire a quest'ultimo uno strumento di enforcing in più.

Il punto è che sempre bene farne uso, perchè ( per programmi grandi ) gli errori si sprecano e non usare qualcosa che ti viene praticamente regalato è semplicemente assurdo. Tu puoi essere anche l'unico ad usare quelle classi, ma immagina di avere una variabile i che dovrebbe essere privata e un'altra j che dev'essere ed è pubblica. Non ci vuole niente a scrivere oggetto.i = xxx invece di oggetto.j = xxx

Daniels118
09-06-2015, 12:38
Non solo, incapsulare un campo ti consente di svincolarti dalla sua implementazione. Considera il caso in cui ad un certo punto ti accorgi che contenere tutti i dati dentro al campo moltiplicato per N istanze della classe è troppo oneroso in termini di memoria, allora sarebbe sensato caricare i dati solo quando effettivamente servono: avendo incapsulato il campo puoi sostituire il semplice return con una query al database in maniera del tutto trasparente per il chiamante, senza quindi dover modificare decine, centinaia, o addirittura migliaia di righe di codice da dove accedevi a quel campo.
Considera l'incapsulamento come un investimento per il futuro, avrai sempre un buon motivo per utilizzarlo.