Stavo rifacendo del codice per renderlo più facile da leggere e mi sono imbattuto in qualcosa che trovavo strano e mi chiedevo se qualcuno potesse spiegarmi questo.Le variabili in casi di switch diversi non possono avere lo stesso nome?
Codice originale:
if(tokensLeft == 3) {
String id = tokens.nextToken();
String value = tokens.nextToken();
String trailerId = tokens.nextToken();
rawListener.binaryInfo(id, Integer.parseInt(value), trailerId, this);
} else if(tokensLeft == 2) {
String id = tokens.nextToken();
String value = tokens.nextToken();
rawListener.binaryInfo(id, Integer.parseInt(value), this);
} else {
System.out.println("Method call binaryInfo could not be done because: \"Wrong number of parameters\"");
}
Dopo refactoring:
switch(tokensLeft) {
case 3:
String id = tokens.nextToken();
String value = tokens.nextToken();
String trailerId = tokens.nextToken();
rawListener.binaryInfo(id, Integer.parseInt(value), trailerId, this);
break;
case 2:
String id = tokens.nextToken(); // Syntax error
String value = tokens.nextToken(); // Syntax error
rawListener.binaryInfo(id, Integer.parseInt(value), this);
break;
default:
System.out.println("Method call binaryInfo could not be done because: \"Wrong number of parameters\"");
break;
}
A prima vista questo sembra perfettamente ragionevole, ma questo mi dà un errore di sintassi.
link tutti i riferimenti per una ridenominazione locale (non cambia i riferimenti in altri file)
Si scopre che per qualche ragione in un'istruzione switch, non sono in grado di utilizzare la String id
e String value
di nuovo in un altro caso.
Questo rende le variabili un po 'scomode.
Ora si potrebbe dire: "Basta dichiarare le variabili sopra l'istruzione switch". Ma ciò significherebbe che I sempre crea le mie variabili, anche se tokensLeft
non è né 3 o 2 e non avrei bisogno delle mie variabili. Mi sembra di usare una memoria inutile.
Qualcuno può spiegarmi perché l'interruttore fa questo e come posso risolvere il mio problema?
Utilizzare metodi - è buona pratica in ogni caso e il vostro campo di applicazione sarà ordinati per voi. Se vuoi davvero scrivere codice spaghetti, usa i blocchi espliciti ('{}'). –