我认为,在Java中定义字符串常量的目的是当在多个地方使用相同的字符串时应该定义一个字符串常量。这有助于减少拼写错误、减少将来更改字符串所需的工作量等。
但是对于只在单个地方使用的字符串,我们是否应该在这种情况下声明字符串常量呢?
例如,记录某些计数器(随机示例)。
CounterLogger.addCounter("Method.Requested" , 1)
- 声明常量与使用原始字符串相比有什么优势?
- 编译器是否进行任何优化?
我认为,在Java中定义字符串常量的目的是当在多个地方使用相同的字符串时应该定义一个字符串常量。这有助于减少拼写错误、减少将来更改字符串所需的工作量等。
但是对于只在单个地方使用的字符串,我们是否应该在这种情况下声明字符串常量呢?
例如,记录某些计数器(随机示例)。
CounterLogger.addCounter("Method.Requested" , 1)
声明常量可以提高您的代码质量,因为它们可以更具描述性。在您的示例中
CounterLogger.addCounter("Method.Requested" , 1)
"Method.Requested"
相当自描述,但1
并不是这样。将其定义为一个常量将使示例更易读。CounterLogger.addCounter("Method.Requested" , INITIAL_VALUE)
Assert.notNull(psc, "PreparedStatementCreator must not be null");
Assert.notNull(action, "Callback object must not be null");
throw getExceptionTranslator().translate("StatementCallback", getSql(action), ex);
private static final String RETURN_RESULT_SET_PREFIX = "#result-set-";
private static final String RETURN_UPDATE_COUNT_PREFIX = "#update-count-";
Iterestingly, this line
Assert.notNull(sql, "SQL must not be null");
在代码中重复5次,尽管作者拒绝将其作为常量。