関数型プログラミングはコードを複雑にしますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 過去1年間、私はScalaコードを書いてきました(Javaのバックグラウンドから来ています)。vals、caseクラス、map / filter / lambda関数、暗黙的および型推論を使用して、よりシンプルでクリーンなコードを作成できる方法が本当に気に入りました。主にAkkaベースのアプリケーションに使用しました。 今年は、関数型プログラミングが大好きな新しいチームとScalaプロジェクトに参加しています。それらはScalazを頻繁に使用し、コードはあらゆる場所にapplicatives、context bounds、reader / writer / stateモナドで満たされ、メインメソッドもI / Oモナドに「ラップ」されます。彼らの推論は、これによりコンパイラがコードが正しいことを主張する際に「私たちのために働く」ようにし、各関数に副作用がないことです。 それでも、私の観点からすると、この構文はすべてビジネスロジックの邪魔になります。たとえば、「MyBusinessObject」のタイプは問題ありません。「List [MyBusinessObject]」、「Option [MyBusinessObject]」、「Future [MyBusinessObject]」などのタイプも同様です。それらはすべて明確な意味と目的を持っています。一方、次のようなコード: def method[M[_]: Applicative] = { case (a, b) => (ca[M](a) |@| cb[M](b)) { case t @ (ra, rb) => if (ra.result && rb.result) t.right else t.left } } それはプログラムに複雑さを追加しますか、それとも私がこのプログラミング方法に慣れていないのは私だけですか?