Far manipolare le variabili di una classe esternamente "non è buono" ![]()
Meglio creare sempre 2 metodi, uno per passare il valore alla variabile ed uno per leggerlo. In questo modo già il compilatore può segnalare errori sull'assegnamento di tipi di dato non valido, e questo è un primo filtro; inoltre il codice nel metodo può eseguire un check sul valore passato per verificare che rientri nel range accettato, è questo è un secondo filtro.
Ad abbondanza, il metodo può anche restituire un valore che, se letto, può far capire al codice principale se l'operazione è andata a buon fine oppure no.
Esempio:
Codice della classe:
int miaClasse::assegnaX(int dato) {
if (dato< 0) {
return 1; //errore - dato negativo
}
if (dato > 100) {
return 2; //errore - dato oltre il max ammesso
}
varLocale = dato; //assegnazione interna
return 0; //tutto a posto;
}
Codice nello sketch:
istanza.assegnaX(10); //ok
int risposta = istanza.assegnaX(-10); //valore negativo - otterrai 1 come risposta
istanza.assegnaX("prova"); //errore dal compilatore - stai passando una stringa