読者です 読者をやめる 読者になる 読者になる

ソフトウェア開発メモ

日々のソフトウェア設計、実装で考えている、気づいた事を書いています。それが真実か否かは保証しません。悪しからず。

条件分岐とメッセージパッシングの差異について。移譲型制御についての考察の続き

オブジェクト指向プログラミングはオブジェクト間の通信によって世界が構築される。 上から降ってくる仕事は、小さなタスクに分割されてどんどん包含されているオブジェクトに移譲される。

一方、If文の使用はオブジェクト指向プログラミングで良くないとされている。 ただ現実にはif文はそれなりに使われている。純粋型オブジェクト言語の代表であるSmalltalkでさえも*1

で、オブジェクトにとってifとは何かという問いに対しては、私なりの現時点の回答は以下の通り。

  • オブジェクトの判断(意思決定)
  • (実作業系)下に位置するオブジェクトが行うアルゴリズム(業務)

前者については、管理する以上、意思決定は避けらない。ただし、良い上司と部下の関係と同様に重要な部分だけ判断するにとどめるのが望ましいだろう。ソース可読性とクラスの再利用の観点から。

後者については、下位のオブジェクトについては、どうしても手続き的プログラミングにならざる得ないという事だろう。考えれば見れば当たり前で、下位のオブジェクトが関わるのはバリューオブジェクト、つまり意志を持たないオブジェクトと関わるようになってくるからだと思う。

*1:SmalltalkではBooleanクラスにメッセージを送る事によって実現