Newsgroup: it.comp.java
Titolo: quesito su java e variabili

Se c'è una variabile non usata (benchè assegnata) eclipse con un warning 
giallo propone :
 
remove variable  and all assignaments   oppure    remove  variable,keep 
assignaments with side effect
 
Che differenza c'è  tra i due? A me il risultato è uguale, ad esempio se 
rimuovo "r"  nella classe :
 
public class rimuovi {
 
    public static void main(String[] args) {
        int t = 44;
         int r = 12;
 
         r = 55;
         r = 56;
 
      t = (r = 3);
 
        System.out.println( t );
    }}
 
ottengo sempre con entrambe le opzioni il medesimo risultato:
 
public class rimuovi {
 
    public static void main(String[] args) {
        int t = 44;
         t = (3);
 
        System.out.println( t );
          }}
 
 
Grazie 
 

 ottengo sempre con entrambe le opzioni il medesimo risultato:
Perche non c'erano side effects.
 

 
 
<<"Dr.UgoGagliardelli"  ha scritto nel messaggio 
news:msi714$543$2...@speranza.aioe.org...
<<Perche non c'erano side effects.
 
ma l'assegnazione di una variabile non ha come side effect proprio la 
restituzione di quel valore ?
Sfruttato qui :


 rimuovo "r"  nella classe :
 
L'assignment con side effect e` quello:
 
t = (r=3)
 
che ha come side effect di assegnare 3 ad r. 
 
Quando rimuovi la variabile e tutti gli assignment, stati rimuovendo r e tutti gli assignment ad r (non serve, di fatto, assegnare ad 3, perche` tutti gli assignment precedenti a r=3 vengono sovrascritti, ed e non viene mai usata). 
Quando rimuovi la variabile ma tieni gli assignment con side effects, stai rimuovendo r, e tenendo t = 3 (l'assignment che originalmente aveva un side effect).

 
 
"4ndre4"  ha scritto nel messaggio 
news:8dc8d07f-1f44-4a47...@googlegroups.com...
 
<Quando rimuovi la variabile e tutti gli assignment, stati rimuovendo r e 
tutti gli assignment ad r (non serve, di fatto, assegnare ad 3, perche` 
tutti gli assignment precedenti a r=3 vengono sovrascritti, ed e <non viene 
mai usata).
<Quando rimuovi la variabile ma tieni gli assignment con side effects, stai 
rimuovendo r, e tenendo t = 3 (l'assignment che originalmente aveva un side 
effect).
 
però a livello di Eclipse non cambia nulla, forse è un suo bug, nel senso 
che il codice risultante è il medesimo in entrambi i casi .
Il quick fix segnala giustamente che saranno rimosse DUE assegnazioni e 
lascia il side effect ( t = 3) in entrambi casi .
 
grazie 
 

 lascia il side effect ( t = 3) in entrambi casi .
 
E ti ho spiegato perche` questo accade.

> però a livello di Eclipse non cambia nulla
 
<<Che vuol dire questa frase? Cosa significa "a livello di Eclipse"?
 
Quick fix di Eclipse propone due scelte ( che ho riportato sopra :
1) remove variable  and all assignaments
2)   remove  variable,keep assignaments with side effect ),
ma il risultato che si ottiene è il medesimo per entrambe le opzioni ( che 
ho riportato pure sopra nel codice),
cioè Eclipse lascia l'istruzione          t = (3);    e la variabile t vale 
3 in entrambi i casi.
 
 
 

Quick fix di Eclipse propone due scelte
 
L'ho capito. E il risultato e` lo stesso. Ho capito anche questo. 
E ti ripeto che non e` un bug. E`, guardacaso, lo stesso risultato per due operazioni differenti. Non puoi seriamente pensare che un tool di sviluppo analizzi come risultera` il codice di fronte ad operazioni diverse, e ti proponga solo una delle due.
 

 
 
"4ndre4"  ha scritto nel messaggio 
news:5ae21140-5a93-42d5...@googlegroups.com...
 
<E ti ripeto che non e` un bug. E`, guardacaso, lo stesso risultato per due 
operazioni differenti.
 
Tu conosci un controesempio di codice in cui  le due opzioni porterebbero  a 
due risultati differenti? 
 


niente dai, è un bug di eclipse e finiamola qui.
 
non è che si può passare settimane a giocare ad "aguzzate la vista" su
come eclipse corregge un codice di merda.

 due risultati differenti?
 
Ti ho gia` spiegato che, il fatto che due opzioni differenti portino allo stesso risultato, non significa necessariamente che questo sia un bug dell'IDE.
L'IDE e` progettato per valutare certe condizioni nel codice, e proporre aggiustamenti sensati. Se poi, due o piu` di questi aggiustamenti portano allo stesso codice risultante, pazienza, e` una coincidenza, non un bug dell'IDE.
Ripeto: non pretenderai mica che l'IDE si metta a filtrare le opzioni sulla base del codice risultante dalla loro applicazione.
 
 

Il giorno mercoledì 9 settembre 2015 12:52:50 UTC+2, Vittorio ha scritto:

Eccoti un "controesempio":
 
public class Main {
	private static int metodo() {
		return 0;
	}
 
	public static void main(String[] args) {
		int x = 1;
		int y;
 
		y = x;
		y = metodo();
	}
}

 
 
"Pa°L°"  ha scritto nel messaggio 
news:3af300aa-335a-4f5d...@googlegroups.com...
 
<Eccoti un "controesempio":
 
perfetto,adesso sappiamo che non era un bug di eclipse 
 

 perfetto,adesso sappiamo che non era un bug di eclipse
 
Lo sapevamo anche prima.

 
 
<"4ndre4"  ha scritto nel messaggio 
news:6ee0133f-ff2e-4ded...@googlegroups.com...

ma se non hai prodotto un controesempio! La tua osservazione è senza pregio. 
 

 ma se non hai prodotto un controesempio! La tua osservazione è senza pregio.
 
Ma quale controesempio! Ma smettila! Se ti ho spiegato perfettamente a cosa e` dovuto il problema! Bah... che gente...