BLOGブログ

  • このエントリーをはてなブックマークに追加

関数プログラミングに学ぶ良いコード

最近、関数プログラミングが流行ってきましたよね。
この良さを説明するのは、とても難しく感じています。
ですが、みなさんの馴染みが深い javascript のちょっとしたコード例で、良さの一部を紹介したいと思います。

問題:
「0から9までを全て加算せよ」

この問題を js のコードで書く、きっと普通のプログラマは下記のようなコードを書くと思います。

何の問題も無いシンプルなコードですね。

ただし、これを関数プログラム的に書くと、下記のようになります。

「関数が1つ増えて見づらくなった」って意見もあるかと思いますが……。
でもこのコードには、バグや複雑さの原因となる下記の要素が入っていないのです。

  • for文が出てこない
  • 状態管理変数が出てこない(iなど常に変化する変数)
  • 再代入が出てこない(rの値が書き換わる)

そして、

「0から9までを全て加算せよ」

の問題を忠実に再現しているのです。

  • 0から9まで→ [0, 1, 2, 3, 4 ,5, 6, 7, 8, 9]
  • 全てxxせよ→reduce
  • 加算→plus

参考:reduce()メソッドの解説
隣り合う 2 つの配列要素に対して(左から右へ)同時に関数を適用し、単一の値にします。

問題を忠実に再現するということは、バグが入り込む余地がないということです。
問題に無い、
「iを0から、10より小さい間、1つずつ加算して」

「結果に加算した値を、再度結果に設定する」
などの命令が存在しないのです。

関数プログラミングを語る知識はまだありませんが、上記の例は、良いコードを書く上で良いヒントになると思い紹介しました。

また、わかりやすい例があったら紹介したいと思います。
ではでは。

ランキング

最近の投稿

アーカイブ

カテゴリー

RSS