BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース オブジェクト指向設計の原則と関数型プログラミング

オブジェクト指向設計の原則と関数型プログラミング

原文(投稿日:2014/03/20)へのリンク

オブジェクト指向プログラミングにはSOLID原則のような十分に確立された設計原則が数多くあるが、関数型プログラミングに移った場合、これまでに身に付けた設計スキルを活かす方法を知らない開発者が多い。Richard Warburtonは最近のプレゼンテーションでそのように述べた
・ 同じ問題についてMark Seemannは最近のブログ記事に書いた。SOLID原則を突き詰めれば、関数型プログラミングがかなり魅力的に見えてくる境地に達するとのことだ。

RichardはロンドンのJCP委員会のメンバーだが、先のプレゼンテーションでSOLID原則を次のように説明している。曰く、オブジェクト指向プログラミングの設計原理の中で十分に確立されているものの一例であり、2000年代初頭にRobert C. Martinに見いだされたものであると。また、そのプレゼンテーションでは、5つの原則のそれぞれについて、関数型プログラミング側における同等のもの、あるいは少なくとも関連性がある何かを見つけようとしている。
Richardの経験談によれば、多くの開発者が、これまでに身に付けた設計スキルを活かして関数型の設計を行う方法を知らないが、関数型プログラミングはSOLID原則を実装する際にしばしば役立つことがあるし、関数型の考え方はオブジェクト指向のある重要な側面、すなわちカプセル化を達成するの=に実際に役立つとのことである。
悶 Richardの結論は、すべてのSOLID原則は関数型において同等のものがあるということである。既存のデザインパターンを捨てる必要はなく、むしろそれらを改善することができる。パターンをさらに単純・純粋なものにしたり、既存知識の活用方法を単純化したりできるからだ。

Markはソフトウェア・アーキテクトでありフリーランスの技術アドバイザーであるが、彼が自身の経験から見出したことは、SOLID原則から導くことができる設計スタイルによって、関数型プログラミングがかなり魅力的なものになるということだ。
SOLID原則のうち、単一責任の原則(SRP)とインターフェイス分離の原則(ISP)の2つを適用すると、単一のメソッドだけを持つ、粒度の細かいインタフェースやクラスがコードベースの中に増えてしまうことになりがちである。
Markの結論は、SOLID原則を繰り返し適用することで、そのような単一のメソッドを持つ小さなクラス群ができてしまうのであれば、その機能はデータを持った振る舞い【訳注:クロージャのこと】としてモデル化することもできるし、その時点でF#のような関数型プログラミング言語に移動する時間なのかもしれないということである。

この記事に星をつける

おすすめ度
スタイル

BT