静态变量:好还是坏?

我习惯在所有程序中广泛使用 ,尤其是在使用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

回到顶部