リンゴジュース :
これはヌル・チェックが望ましいのですか?
Optional.ofNullable(port).ifPresent(settings::setPort);
若しくは
if (port != null) {
settings.setPort(port);
}
スチュアート・マークス:
Javaでは、Optional
値は任意の参照型の値と、有無を示すビットの融合物であるT
か、プリミティブint
、long
またはdouble
。
メソッドから値を返すときの方法は、単一の戻り値を持っているとして、これらを融合することは、特に便利です。それは以下のような特別な値を使用することがしばしば必要ですnull
参照型の場合には、-1の場合にはint
「無価値」の場合を示すセンチネルとして、。使用してOptional
戻り値としては、誤って実際の戻り値としてセンチネル値を誤用し、発信者の問題を回避します。
このコードの、ラインなどを考えます
Optional.ofNullable(port).ifPresent(settings::setPort);
それはラインの最初の部分に存在する/存在しないビットとの値を融合することで奇妙であり、その直後のラインの第二の部分にそれらを分離します。かどうかをチェック:これは最終的にはかなり単純な作業です何が複雑にport
非nullで、条件付きでいくつかのアクションを実行します。代替コードスニペット:
if (port != null) {
settings.setPort(port);
}
はっきりまさにそれが何を表現しています。
これは、if文は、より多くの垂直方向のスペースを取ることは事実だOptional
チェーン。Optional
チェーンは密度が高いが、それは理解することは難しくもあります:貧しいトレードオフを。