静态变量:好还是坏?
我习惯在所有程序中广泛使用 ,尤其是在使用Android时。我倾向于使用它们,因为有时
会很 。因此,我只是将
变量,并通过使用“点”运算符轻松地在其他类中访问它们。使用静态变量的另一个原因是当我要在整个应用程序中使用
。就像我在下面给出的代码一样,它可以帮助我 。
public class Utility {public static Facebook fb;
public static AsyncFacebookRunner fbAsyncRunner;
public static String[] fbPermissions = {"email", "read_stream", "user_birthday"};
public static final String PREF_UTILITY_FILE_NAME = "PrefUtilityFile";
public static SharedPreferences prefs;
public static Editor editor;
public static String access_token;
public static long expires;
}
我在网上搜索了类似的问题,并碰到了这个,但是他们似乎并没有给出该问题的最终答案。而且在大多数地方,我看到意见不一致,因此完全感到困惑。
我是否应该使用它?
回答:
您可以将所有静态字段替换为“上下文”对象,可以将其传递或创建为Singleton。可以删除几乎所有静态字段。这是否一个好主意取决于您,但是我不认为使用实例字段会更困难。
顺便说一句:我建议
- 将静态字段/常量与使用它们的类或包放置在一起
- 如果可能,将静态数组视为不可变的
final
。
您可以将非静态上下文用于
public class Context { public static final String PREF_UTILITY_FILE_NAME = "PrefUtilityFile";
public Facebook fb;
public AsyncFacebookRunner fbAsyncRunner;
public String[] fbPermissions = {"email", "read_stream", "user_birthday"};
public SharedPreferences prefs;
public Editor editor;
public String access_token;
public long expires;
}
// pass to constructor as required
class UsesContext {
final Context context;
public UsesContext(Context context) {
this.context = context;
}
public void method() {
// can use context
}
}
这使您可以创建具有多个上下文的单元测试。
我唯一要保持静态的是常量。
以上是 静态变量:好还是坏? 的全部内容, 来源链接: utcz.com/qa/406639.html