よく知られているように
LOGGER.debug("The parameter p1 cannot be " + p1 +
", it must be between " + P1_MIN + " and " + P1_MAX);
ロガーの設定により結果が破棄される場合でも、文字列連結が行われるという欠点があります。これを避けるために、次のボイラープレートが一般的です
if (LOGGER.isDebugEnabled())
{
LOGGER.debug("The parameter p1 cannot be " + p1 +
", it must be between " + P1_MIN + " and " + P1_MAX);
}
これは、3 行追加することで回避できます。
slf4j
(およびその他)は、(および)を使用して代替手段を提供します。varargs
overloading
LOGGER.debug("The parameter p1 cannot be {} , it must be between {} and {}",
p1, P1_MIN, P1_MAX);
これははるかにきれいに見えますが、Object array
可変数のパラメーターを渡すために作成されています。
このオブジェクト配列の作成にはどれくらいの費用がかかりますか? そのコストは、コード行を削減する利点を上回りますか?
ベースとなるメソッドは、上記の定型文に正確に対処するために作成されていると思われるvarargs/formatter
ため、専門家からのわずかに主観的な回答は、非常に多くのプログラマーの役に立ちます。また、オブジェクト配列の作成が非常に安価であるか(私の希望です)、非常に高価であるかは主観的ではありません。