In C, posso creare una variabile statica in una funzione. Lo spazio per quella variabile non è allocato insieme alle variabili di funzione, è allocato al momento dell'avvio del programma. (Non prendere in giro il mio C troppo duramente, Sono stato di programmazione in Java per troppo tempo :)Best practice per la definizione di una variabile Java che agisce (qualcosa) come una variabile statica locale di C
void myFunc(){
static SomeStruct someStruct;
someStruct.state=INITIALIZED;
goDoSomethingInteresting(MY_COMMAND,&someStruct);
}
In Java, se voglio fare qualcosa di simile, creo una variabile di classe e poi usarlo .
Class TheClass {
SomeStruct someStruct = new SomeStruct();
void myFunc(){
someStruct.setState(INITIALIZED);
goDoSomethingInteresting(MY_COMMAND,someStruct);
}
}
La mia domanda è qual è la migliore pratica per fare qualcosa del genere? Mi piacerebbe davvero associare la mia variabile someStruct
con la mia funzione myFunc
, perché someStruct
è l'unico codice che dovrebbe conoscere o usare someStruct
, ma non c'è modo di farlo, se non per mettere la variabile vicino alla funzione nel codice. Se lo metti sopra, allora il Javadoc per la funzione sembra stordito, se lo metti sotto, quindi non è molto chiaro che essi appartengono insieme.
Normalmente vorrei solo creare someStruct
a livello locale, ma nel mio caso è molto costoso per creare someStruct
, e io chiamare myFunc
in un loop stretto.
Questa è probabilmente l'opzione più simile a Java, anche se ancora leggermente confuso e difficile da mantenere. – biziclop
Sono d'accordo con @biziclop. Questo è l'unico modo per fare quello che chiedo, ma probabilmente non lo farò mai a meno che non abbia molte variabili come "someStruct". Si noti che questo potrebbe essere il caso in un gioco Java in cui non si vuole creare molto lavoro per il garbage collector. – JohnnyLambada