【发布时间】:2018-03-06 12:09:49
【问题描述】:
我不确定我是对还是错,但 SonarLint 给了我无数关于重复使用某些字符串的警告。
因此,我为模块中的字符串创建了一个常量文件,该模块已在项目中的每个其他模块中访问。
我的想法是,如果我们不断被警告这一点。它可能会多次创建这些字符串中的每一个并暂时增加内存。 (它是一个 Web 应用程序,生成 JSON 和 XML,其中包含许多经常重复的术语,例如“身份”或“社区”)
我想知道的问题是,我的 IDE (IntelliJ) 似乎只是不断添加以下行:
import static com.*****.*****.resources.Constants.*
代替:
import static com.*****.*****.resources.Constants.PARAM_NAME_HASEMAIL;
import static com.*****.*****.resources.Constants.PARAM_NAME_HASSMS;
import static com.*****.*****.resources.Constants.PARAM_NAME_CMD;
请记住,该文件目前很小,大约有 100 个常量,但这个数字最终会达到 250 个。
首先我的问题是,哪个导入效率更高,只需导入文件,导入每个所需的常量,或者没关系(文件中最多肯定是 250 个常量)
我的第二个问题是,这值得付出努力吗(简单但繁重的工作)? 一个例子是:
data.has(PARAM_NAME_OPTIN)
data.remove(PARAM_NAME_OPTIN);
data.put(PARAM_NAME_OPTINTYPE, Coupon.OPTIN_MODE_SINGLE_OPTIN);
以上内容可能位于不同文件中的 3 或 4 个位置。 这两个常量的定义是:
public static final String PARAM_NAME_OPTIN = "optin";
public static final String PARAM_NAME_OPTINTYPE = "optInType";
下面是最严重的违规者。它是在从前端调用后端的每个方法中(在浏览器中的 ajax 请求之后):
json.put(PARAM_NAME_CMD, "Coupon.doSearchCouponEntriesByCoupon");
json.put(PARAM_NAME_APPID, PARAM_NAME_CAMPAIGN);
json.put(PARAM_NAME_COMMUNITYID, session.getAttribute(PARAM_NAME_COMMUNITYID));
json.put(PARAM_NAME_IDENTITYID, session.getAttribute(PARAM_NAME_IDENTITYID));
同样的定义是:
public static final String PARAM_NAME_APPID = "applicationId";
public static final String PARAM_NAME_CMD = "command";
public static final String PARAM_NAME_CAMPAIGN = "*****campaign";
public static final String PARAM_NAME_COMMUNITYID = "communityId";
public static final String PARAM_NAME_IDENTITYID = "identityId";
我已为软件包名称加注星标以试图掩盖公司。即使这并没有真正共享任何 IP 或秘密,也比抱歉更安全。
感谢您提供的任何反馈(好的或坏的)。
附加信息:我正在为当前使用的每个文件手动导入的文件之一对这些常量有 22 个导入。 我想如果数字达到这样的高度,那么也许我应该改用*?还是它仍然对记忆有影响?
【问题讨论】:
标签: java constants static-import