をカリー化私は機能を有し、機能分解の利点と
Double calculate(String A,int B) {
if(A.equals("something")){ return B*1.02; }
if(B.equals("some")) return B*1.0;
else return B;
}
レガシーコードに(文字列A、INT B)を計算Bに適用計算は、機能的にはA.
の値に依存しますそして、代わりにcalculate(a,b)
を呼び出す私は
Function<String, Function<Integer,Double>> strategyA = (a)-> {
if(A.equals("something")) return b -> b*1.02;
if(B.equals("some")) return b -> return b -> b*1.0;
else return b -> b;
}
:スタイル私にこれを破ることができます0
strategyA.apply(a).apply(b)
2番目のスタイルは最初のスタイルよりも優れていますか?私の理解によれば、これには戦略パターンと機能的分解とカリングが含まれます。
2番目のアプローチが本当に良い場合は、どのように誰かを説得しますか?
あなたはまだ 'Function'を返すメソッドを持つことができます... – Holger
@Holger質問は構文に関するものではなく、直接計算された値の代わりに結果として関数を返すという利点と、複数の関数。 –
Tomasは、これが実際に意味をなされるかもしれない1つのユースケースを明確に述べています。 –