Visualizzazione dei risultati da 1 a 7 su 7

Visualizzazione discussione

  1. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da desiderio Visualizza il messaggio
    codice:
    testo.STAMPA_ricalcolo.setText("CIAO"); qui vorrei mettere il VL
    Non puoi. Le variabili locali di un qualunque metodo(/costruttore) sono appunto LOCALI. NON sono visibili da altri metodi. Devi trovare altre strade dal punto di vista del "design" generale. Che quindi devi apprendere e capire meglio.

    Quote Originariamente inviata da desiderio Visualizza il messaggio
    Ma che errori possono succedere se non sono pubbliche, perchè ora capisco il metodo corretto ma non le cause di quello scorretto. grazie ancora
    Un motivo pratico l'ho detto prima. Se la variabile di istanza è pubblica, tu NON hai controllo su chi/dove/come accede alle variabili. Non puoi imporre e garantire degli "invarianti" e se andiamo a livello più fine non puoi nemmeno gestire una eventuale sincronizzazione e quindi non potresti nemmeno rendere thread-safe la classe.
    Nella Range che ho mostrato prima, mi basterebbe dichiarare quei 4 metodi come synchronized et voilà, la classe sarebbe thread-safe perlomeno rispetto all'uso di ciascun singolo metodo. Se min/max fossero pubbliche, questo non lo potresti garantire.

    Inoltre c'è un discorso più ampio legato al concetto di information-hiding, cioè il nascondere informazioni che non sono (e "non dovrebbero") essere importanti all'esterno.
    Domandati: è molto importante che qualcuno sappia della esistenza dei campi min/max? Se in futuro tu che es. avessi in gestione la classe Range volessi cambiare i nomi dei campi in valoreMin e valoreMax? Se sono privati puoi farlo, puoi cambiare i nomi (mantenendo i 4 metodi così come sono). Se sono pubblici, non puoi cambiarli senza che all'esterno qualcosa si "spacca" e debba poi essere corretto.
    Se qualcosa è pubblico fa parte del "contratto" verso l'esterno della classe. E non puoi (non sempre facilmente, perlomeno) cambiarlo in futuro.

    Morale della favola: nascondi il più possibile e non esporre (all'esterno) variabili di istanza se NON c'è un motivo davvero valido e impellente.
    Ultima modifica di andbin; 13-12-2016 a 11:11
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.