2011-04-02

オブジェクト指向・ディバイド(4)

オブジェクト指向関連のキーワードに「デザインパターン」があります。
手続型のプログラミングにおいてもアルゴリズム辞典というものがありますが、これに似ていて、ある問題にぶつかったときの解決方法の羅列でもあります。

しかし、僕の独断と偏見ですが、これはオブジェクト指向そのものでも、その応用でもないと考えた方が正しいと思うのです。オブジェクト指向対応のプログラミング言語がもっている機能をやや奇抜な方法を含めて応用したもので、過剰適用みたいな部分も感じられます。

もちろん、こういったものがあるということを知っておくことは大切です。先人たちが既に考えていたことを再度自分で発明しても誰も褒めてくれません。


ただし、注意しておきたいこともあります。

たとえば、オブジェクト指向言語にはポリモフィズムという機能があります。これはうまく利用すれば非常にすっきりとしたプログラミングができるけれど、一方で、デバッグが困難になりがちです。問題箇所を特定しにくい傾向があるからです。
なぜなら、メソッドの呼び出し側では具体的にどこの処理を呼んでいるのか意識しなくていいので、実行時にならないと処理が特定しにくいからです。デバッガでトレースできればまだいいのですが、場合によってはデバッガが使えない環境でとても困ることもあります。

オブジェクト指向プログラミングにはリスクもあります。たいていはリスクよりメリットが上回りますが、無理矢理デザインパターンを適用させるとリスクがメリットを上回ってしまうことも多々あるのではないかと思われます。
デザインパターンを見つけて手放しで適用するとそんな失敗に陥りやすいと思います。

常にトータルでのソフトウエアの品質、合理性を広い視野で判断しなければなりません。開発チームにオブジェクト指向に疎い人がいるなら、そこに設計を合わせるといった一見理不尽な判断さえも必要になるかもしれません。

試行錯誤や他人との議論はオブジェクト指向のスキルを向上させるためにとても重要なことです。デザインパターンの適用も含め、一発で考えついたものが最適な選択になる確率はオブジェクト指向では常に低いと考えるべきです。いくつも考えられるパターンの一つでしかないからです。

0 件のコメント:

コメントを投稿