[英]String constant vs variable in a Java method
对于更安全和更清晰的代码,不可更改的常量值应存储在常量而不是变量中。
后者并不适用于所有不可更改值的情况:在初始化使用相同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);
}
还是第三个更好的解决方案? 还请考虑在同一类中可以有更多类似的方法。
对我来说,最好的解决方案是在方法中使用变量 - 因为它是内部变量。 所以其他方法不应该看到它。 考虑封装和清理代码,当您尝试在类级别上移动此变量时,您将获得一长串的类变量。
另一件事是记忆。 执行方法后,变量将被销毁。 当您将其定义为静态时,它将一直存在于您的内存中。
我可以想到三个地方放置你的变量(所有最终的ofc),每个都有它的优点和缺点。
Properties
类中的公共静态字段。 1 - 优点:变量只能在您的方法中看到 - 高代码安全性。 Disadvatages:变量被埋在一个方法里面,很难找到和改变。
(我将跳过2,因为它只是在1和3之间妥协)
3 - 优点:您的字段是其他可配置字段之一,可以轻松更改您的设置。 缺点:字段是公共的,每个人都可以看到它(但String
是不可变的,所以没有人能够改变它)。
总结:取决于您期望改变变量所需的程度(例如平衡,换色等)。 如果你确定这个字符串值是正确的,我不会害怕把它放到局部变量中。
通常,常量不是特定于实例的。 因此,将常量存储为静态变量而不是成员变量是更好的做法。 优点是:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.