在C中,我可以在函数中创建一个静态变量.该变量的空间不与函数变量一起分配,它是在程序启动时分配的.(不要太苛刻地模仿我的C,我已经用Java编程了太久:)
void myFunc(){
static SomeStruct someStruct;
someStruct.state=INITIALIZED;
goDoSomethingInteresting(MY_COMMAND,&someStruct);
}
Run Code Online (Sandbox Code Playgroud)
在Java中,如果我想做类似的事情,我创建一个类变量然后使用它.
Class TheClass {
SomeStruct someStruct = new SomeStruct();
void myFunc(){
someStruct.setState(INITIALIZED);
goDoSomethingInteresting(MY_COMMAND,someStruct);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是做这样的事情的最佳做法是什么?我真的想将我的变量someStruct与我的函数相关联myFunc,因为myFunc它是唯一应该知道或使用的代码someStruct,但除了将变量放在代码中接近函数之外,没有办法建立这种关联.如果你把它放在上面,那么函数的Javadoc看起来很不可思议,如果你把它放在下面,那么它们不是很清楚它们属于一起.
通常我只是someStruct在本地创建,但在我的情况下,创建它是非常昂贵的someStruct,我打电话给myFunc一个紧凑的循环.
一个小类将干净地关联someStruct行为myFunc,但它是理解和维护事物的额外开销.可能是值得的,可能不是.
class TheClass {
MyFuncBehavior myFuncer = new MyFuncBehavior();
void myFunc() {
myFuncer.myFunc();
}
}
class MyFuncBehavior {
private static SomeStruct someStruct = new SomeStruct();
public void myFunc() {
someStruct.setState(INITIALIZED);
goDoSomethingInteresting(MY_COMMAND,someStruct);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |