En C, puedo crear una variable estática en una función. El espacio para esa variable no se asigna junto con las variables de función, sino que se asigna al inicio del programa. (No te burles de mi C con demasiada dureza, he estado programando en Java por demasiado tiempo :)Práctica recomendada para definir una variable Java que actúa (algo) como la variable estática local de C
void myFunc(){
static SomeStruct someStruct;
someStruct.state=INITIALIZED;
goDoSomethingInteresting(MY_COMMAND,&someStruct);
}
En Java, si quiero hacer algo similar, puedo crear una variable de clase y luego usarlo .
Class TheClass {
SomeStruct someStruct = new SomeStruct();
void myFunc(){
someStruct.setState(INITIALIZED);
goDoSomethingInteresting(MY_COMMAND,someStruct);
}
}
Mi pregunta es ¿cuál es la mejor práctica para hacer algo como esto? Realmente me gustaría asociar mi variable someStruct
con mi función myFunc
, porque myFunc
es el único código que debe conocer o usar someStruct
, pero no hay forma de hacer esa asociación excepto para poner la variable cerca de la función en el código. Si lo pones arriba, entonces el Javadoc para la función parece poco claro, si lo pones a continuación, entonces no está muy claro que estén juntos.
Normalmente me acaba de crear someStruct
localmente, pero en mi caso es muy costoso crear someStruct
, y llamar myFunc
en un bucle estrecho.
Esta es probablemente la opción más similar a Java, aunque aún ligeramente confuso y más difícil de mantener. – biziclop
Estoy de acuerdo con @biziclop. Esta es la única forma de hacer lo que pregunto, pero probablemente nunca lo haga a menos que tenga muchas variables similares a 'someStruct'. Tenga en cuenta que este podría ser el caso en un juego de Java donde no desea crear mucho trabajo para el recolector de basura. – JohnnyLambada