我不确定我是对还是错,但 SonarLint 给了我无数关于重复使用某些字符串的警告。
结果,我为模块中的字符串创建了一个常量文件,该模块已在项目中的每个其他模块中访问。
我的想法是,如果我们不断被警告这一点。它可能会多次创建这些字符串中的每一个并暂时增加内存。(它是一个网络应用程序,生成带有许多经常重复的术语的 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 个导入。我想如果数字达到这样的高度,那么也许我应该改用*?还是它仍然有记忆影响?