声明在多个活动中使用的常量的最佳实践
Best practice for declaring constants that are used in several Activities
在几个教程中,我看到结果代码在相关活动的顶部设置为 "private static final int"s。对我来说,这似乎不是最好的方法,因为我发现自己不得不经常参考其他 classes 来找到正确的代码,而不是参考在其他地方创建的相同代码。
有更好的方法吗?只制作一个实用程序 class 来保存公共结果代码、请求代码、数据密钥等是不是不好的做法?我以前从未见过这样做。
另一种方法是将此变量保留在 Gradle 中构建并像这样使用它们:BuildConfig.VARIABLE
示例:
在 gradle 文件中:
buildTypes {
release {
buildConfigField "java.lang.String", "DATABASE_NAME", "\"db_name\""
}
}
在Java中:
BuildConfig.DATABASE_NAME
优点:
- 可以更改不同版本的常量值
- 所有程序常量都在一个地方
- 由 IDE/Gradle
自动生成 (BuildConfig)
参考文献:
我认为这是个人喜好,尽管将所有静态数据都放在实用程序中似乎更有意义 class。为简单起见,教程可能会在 Activies 中展示它们,这比使用实用程序 classes 更容易理解,因为它们只需要几个静态变量。
如果您需要为几个 class 共享常量,您可以创建特殊的 "constants" class 并引用它。
package ru.kopeyko.***;
/**
* class for holding various CONSTANTs for '***' app
*
* @author Andrey Kopeyko <andrey@kopeyko.ru>
*/
public final class Const {
public static final String UUID_DEFAULT = "00000000-0000-0000-0000-000000000000";
public static final String VERSION_CODE = "versionCode";
public static final long ONESECOND = 1000L;
public static final int POSITIONS_MAX_DAYS = 32;
public static final long DB_MAINTENANCE_INTERVAL = 1*86400*1000L;
}
在几个教程中,我看到结果代码在相关活动的顶部设置为 "private static final int"s。对我来说,这似乎不是最好的方法,因为我发现自己不得不经常参考其他 classes 来找到正确的代码,而不是参考在其他地方创建的相同代码。
有更好的方法吗?只制作一个实用程序 class 来保存公共结果代码、请求代码、数据密钥等是不是不好的做法?我以前从未见过这样做。
另一种方法是将此变量保留在 Gradle 中构建并像这样使用它们:BuildConfig.VARIABLE
示例:
在 gradle 文件中:
buildTypes {
release {
buildConfigField "java.lang.String", "DATABASE_NAME", "\"db_name\""
}
}
在Java中:
BuildConfig.DATABASE_NAME
优点:
- 可以更改不同版本的常量值
- 所有程序常量都在一个地方
- 由 IDE/Gradle 自动生成 (BuildConfig)
参考文献:
我认为这是个人喜好,尽管将所有静态数据都放在实用程序中似乎更有意义 class。为简单起见,教程可能会在 Activies 中展示它们,这比使用实用程序 classes 更容易理解,因为它们只需要几个静态变量。
如果您需要为几个 class 共享常量,您可以创建特殊的 "constants" class 并引用它。
package ru.kopeyko.***;
/**
* class for holding various CONSTANTs for '***' app
*
* @author Andrey Kopeyko <andrey@kopeyko.ru>
*/
public final class Const {
public static final String UUID_DEFAULT = "00000000-0000-0000-0000-000000000000";
public static final String VERSION_CODE = "versionCode";
public static final long ONESECOND = 1000L;
public static final int POSITIONS_MAX_DAYS = 32;
public static final long DB_MAINTENANCE_INTERVAL = 1*86400*1000L;
}