関数型プログラミングで管理可能なコードを書く方法は?


14

私は関数型プログラミング(JavaScriptとNode.jsを使用)を開始しましたが、見た目からは、作成しているコードは、オブジェクト指向のパラダイムの一種。

OOPを使用すると、コードを簡単に管理し、拡張可能にするためのプラクティスに精通しています。しかし、関数型プログラミングでも同様の慣習があるのは確かです。


4
JavaScriptはオブジェクト指向言語であるので、上に行くとのNode.js使用してOOPのスキルを使用
ジョナス

5
機能を試してください。それらはほとんどすべての問題を解決します。
tp1

4
ここにあなたのノードのソースコードがきちんと整頓ので、管理しやすい維持に多大なリソースです:nodeguide.com/style.html
ダニエル・ブラッドリー

2
私の知る限り、JavaScriptが持っている唯一の関数型プログラミング機能は、ラムダ(より正確には、名前のない関数)と関数の受け渡しです。関数型プログラミングを学びたいなら、おそらくHaskellやF#/ OCaml、ScalaやLispのようなものを調べるべきです。
宮坂

回答:


8

実際には、大規模な機能コードベースを何らかの構造システムに分割する必要があります。OOPに慣れている場合、クラスは自然な構造化要素のままです。「機能的なオブジェクト」を目指して努力します。概念的に関連する機能は、クラスにまとめられます。もちろん、非会話型の状態とインスタンス変数への依存を避けます。

構造を超えて、機能の世界では拡張、保守性、一般化のために好まれている、部分関数アプリケーションなどの特定の手法があります。ただし、ハイブリッド機能/オブジェクトモードで作業する場合、これらの機会を認識することは困難です。個人的には、ハイブリッドモードで作業することをお勧めしますが、Haskellが提供する環境など、より純粋な環境で学習してプレイすることをお勧めします。


2

関数型プログラミング言語には、高品質のコードを構築するための強力な概念がたくさんあります。たとえば、部分的に適用される関数、関数合成(これは本当に強力で私のお気に入りです)、マクロ、高階関数です。そして、不変のデータ構造を忘れないでください。


1

FPのOOPを放棄するのではなく、FPパターンをいくつか追加してみてください。コレクションを処理する必要があるときはいつでも良い候補であり、map、fold、reduceなどの一般的なFPメソッドのセットを指します。underscore.jsとバックボーンを見てください。バックボーンは、前者を広範囲に使用するMVCフレームワークです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.