【发布时间】:2020-07-30 07:52:23
【问题描述】:
我的代码中有一个调试日志语句,我将代价高昂的方法调用的结果传递给该语句。
log.debug("Data - {}", obj.costlyMethodCall());
现在,即使调试日志被禁用,obj.costlyMethodCall() 将始终被评估为作为方法参数传递。
缓解这种情况的一种方法是明确检查是否启用了调试日志记录
if (log.isDebugEnabled()) {
log.debug("Data - {}", obj.costlyMethodCall());
}
但这会降低代码的可读性。
这里有没有更好的方法来使 obj.costlyMethodCall() 的调用变得懒惰或有条件?
【问题讨论】:
-
使用
Supplier或明确检查是否启用了调试。它降低了可读性,但前提是它被大量使用。如果它被大量使用,则表明如果您总是记录昂贵的方法调用,则说明您存在设计问题。
标签: java