对于更安全和更清晰的代码,不变的常量值应为stored in constants rather than variables。
后者并不适用于所有不可更改值的情况:在初始化使用相同String值两次的应用程序时,会出现以下方法仅调用一次。 String仅在方法内引用和使用。
我的问题是:变量/常量定义的最佳方法是什么?作为大型应用程序中的简单字符串,性能和内存可以忽略不计,更多的是可读性和维护。
它是否在方法中变量:
protected void init() {
final String thestring = "thevalue";
methodA(thestring);
methodB(thestring);
}
或者它是否在类级别上是常量(尽管仅在方法中使用):
private static final String THESTRING = "thevalue";
protected void init() {
methodA(THESTRING);
methodB(THESTRING);
}
还是第三种更好的解决方案?还请考虑在同一类中可以有更多类似的方法。
答案 0 :(得分:1)
对我来说,最好的解决方案是在方法中使用变量 - 因为它是内部变量。所以其他方法不应该看到它。考虑封装和清理代码,当您尝试在类级别上移动此变量时,您将获得一长串的类变量。
另一件事是记忆。执行方法后,变量将被销毁。当你将它定义为静态时,它将一直存在于你的记忆中。
答案 1 :(得分:1)
我可以想到三个地方放置你的变量(所有最终的ofc),每个地方都有它的优点和缺点。
Properties
类中的公共静态字段。1 - 优点:变量只能在您的方法中看到 - 高代码安全性。 Disadvatages:变量被埋在一个方法中,很难找到和改变。
(我跳过2,因为它只是在1和3之间妥协)
3 - 优点:您的字段是其他可配置字段之一,可以轻松更改您的设置。缺点:字段是公开的,每个人都可以看到它(但String
是immutable所以没有人能够更改它。)
总结:取决于您期望改变变量所需的程度(例如平衡,颜色变化等)。如果你确定这个字符串值是正确的,我不会害怕把它放到局部变量中。
答案 2 :(得分:0)
通常,常量不是特定于实例的。因此,将常量存储为静态变量而不是成员变量是更好的做法。优点是: