ファンクショナルプログラミングのプラクティスを設計レベルで適用するかどうか、つまりクラス階層を識別して設計する場合、またはファンクションプログラミング体を作成する場合のみ適用できますか?ファンクショナルプログラミングアプローチを適用するレベル
私が感じることは、通常のOOPテクニックを適用して設計プロセスを行い、機能アプローチを使用して実装を書くことです。
あなたの考えてください!
ファンクショナルプログラミングのプラクティスを設計レベルで適用するかどうか、つまりクラス階層を識別して設計する場合、またはファンクションプログラミング体を作成する場合のみ適用できますか?ファンクショナルプログラミングアプローチを適用するレベル
私が感じることは、通常のOOPテクニックを適用して設計プロセスを行い、機能アプローチを使用して実装を書くことです。
あなたの考えてください!
Brian McNamara、F#開発チームの、How does functional programming affect the structure of your code?題した興味深いブログを持っています。
私は、関数型プログラミングは実装と個々のルーチンのレベルで実際のコード構造、モジュールとサブシステムのレベルでの全体的なアーキテクチャへの影響に及ぼす影響が最も大きい傾向にあると思います。
FPは問題がどのように攻撃され、DSL、非同期コード、フィルタグラフ、アクターなど、まったく異なるアプローチにつながる可能性があるとも考えられますが、これらはすべて考慮に入れることができます分散、REST、クライアント/サーバーなど、より大規模なアーキテクチャに影響を与えない「中規模の」ソリューション
デザインプロセスはOOPに依存しません。多分、私たちはオブジェクトやクラスを必要とします。おそらく大部分は機能的な技術を使用するでしょう。たぶん必要なのは5分のperlスクリプトです。それは私たちが達成しようとしているものに依存します。
しかし、OOPが純粋に機能的な設計の仕方になるかもしれないという議論ができました。それ以外の議論ができるかもしれない。あなたの最良の判断を使用し、2つのパラダイムのバランスをとる必要があるという別の議論ができます。他の人たちは、2つのアプローチが直交し、矛盾することなく組み合わせることができます。
しかし、実際はすべて抽象です。答えはMUです。あなたが本当の問題を抱えていると、機能的アプローチか、あるいはoopアプローチが適切で、どのレベルであるかを教えてくれるでしょう。
このようなすばらしい答えに感謝します。私はFPが実装レベルで優れており、OOPはより抽象的なレベルであるという結論に達しました。 – pokrate
FP
に実装したい場合は、設計時にFP
アプローチに向かって少し偏っています。
しかし、Breton
は選択が主観的であるという良い点になります。
参考文献。
私はFPの実装技術とOOPハイレベルの分解ことに同意良い戦略です。私はブログでこのいくつかを議論:
How does functional programming affect the structure of your code?
また、OOは必ずしも「状態」を意味するわけではありません。私がSmalltalkを使い始めたとき、コードはしばしば新しいオブジェクトを返し、コピーしたり、オブジェクトをステートレスな値として扱うことに気付きました。実際にはこれはOOを強化します。不要な副作用を心配することなくメッセージを送ることができます。もちろん、ステートフルコードの厄介な混乱を書くことはまだ可能ですが、何とかステートレススタイルは自然な感じです。 PS:あなたが記述するコマンドパターンは縮退です。クロージャーが必要なOO言語では必要ありません。しかし、コマンドは、変更をセットアップ/記録/元に戻す必要がある場合(prevaylerスタイルの永続性など)にはまだ役立ちます。 –
こんにちは!このような忙しい研究で、私はこのリンクhttp://blogs.msdn.com/ericwhite/pages/FP-Tutorial.aspx を発見し、それが非常に有用であることを発見しました。 – pokrate