BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース コードの構築に、OOPは最適?

コードの構築に、OOPは最適?

パワーおよび柔軟性を提供するプログラミング言語が、近ごろ勢いをつけている。しかしながら、Johnatan Tang氏は、従来のオブジェクト指向性が、プログラム編成をますます容易にし、かつ単純にしている(リンク)という事実が原因で、柔軟性対生産性の矛盾があること を強調している。

氏は、シングルディスパッチの言語では「パラメータや他の値があれば、それでできることが正確に分かる」と主張している。静的に入力された言語では、コー ドは関与する値をより公開しており、構造的に入力された言語では、それはますます一般的であるが、それでも与えられた値でどんな操作ができるのかが即座に分かる。また静的および構造的に入力された言語に関して、指定のオブジェクトでサポートされない操作を実行する場合、すべきことが明確である。

その操作を実行するメソッドを記述する。そのクラスを制御しない場合、これは問題になる。RubyやC#がオープンクラスに移行したのはそのためである。

また、このメソッドがどうなるのかが明白である。つまり、操作する必要があるクラスが分かる。

マルチディスパッチ言語では、メソッドがどこに記述されるか、また「新しいメソッドのどのパラメータが(指定の)値をとる」のかが不明瞭である。これによってコードの調整時に柔軟性を提供するが、それに関しさらに決定がなされ、こうした決定を肝に銘じておくために、さらに取り組みが提供されるべきである ことを、示唆している。

そのメソッドを使用するときはいつでも、どこに定義されたかを思い出し、適切なインポートステートメントを追加する必要がある。もし忘れた場合、指定された汎用機能の適切なメソッドが読み込まれなかったなど、予想外の振る舞いをする場合がある。

決まりごとを定めることは、この問題に対するソリューションだと見なすことができる。しかしながら、Tang氏は「言語によって実施されない決まりごと は、従われない傾向にある」と信じている。さらに、モジュールの配列用にいくつかパターンを定義しようとした(リンク)後で、氏は「これは本質的にドメインごとに固有の問題である。すべてのプログラムに当てはまる原理を正しく作っているものは存在しない」ことを断言している。

従って、Johnatan Tang氏によると、プログラムの体系化におけるこの柔軟性対生産性の矛盾に対する明確なソリューションはない、ということだ。自分が好きな言語につては、どうか?どんなソリューションを見つけられるか?また、自分の経験を考えると、その両者間で格好の歩み寄りがあるか?

 

原文はこちらです:http://www.infoq.com/news/2008/11/oop-vs-fp-4-code-structure

この記事に星をつける

おすすめ度
スタイル

BT