ダックタイピングでコストを削減するダックタイピングとは、暗黙的なパブリックインターフェース。オブジェクトの振る舞いは、コードとして存在する明示的なインターフェースではなく、「どのメッセージに応答するか」という暗黙的なインターフェースに依存することになる。見るダックタイピングの理解あるオブジェクトにメッセージを送ろうとするとき、そのオブジェクトの型を知っている必要はない。重要なのは、そのメッセージに応答可能かどうかだけである。オブジェクトが何で「ある」かではなく何を「する」かに注目する。ダックタイピングによって、簡潔な記述ときれいな構造を両立することもできれば、理解不能な混沌を作り出すこともできる。コードとしてインターフェースを定義しなくて良いということは、好きにして良いということではない。クラスやインターフェース(Java)と同様に設計し、ドキュメントを整備する必要がある。すべてがコード上に現れる具象的なコードは理解しやすいが拡張しにくい。(ダックタイピングのように)暗黙的な取り決めがある抽象的なコードは拡張性は高いがひとめで理解しにくい。このトレードオフが常に存在する。Rubyのようにダックタイピングが使えない場合にポリモーフィズムを実現するには継承、Mix-inなどがある。ダックタイピングの利用ダックタイピングを使うべきはどんなときか、いくつかパターンが存在する。is_a?responds_to?これらが現れたとき、なにか「共通のもの」がそこには存在するはず。Quxはどれも何かを始めるためのメソッドを持っているが、それらすべてばらばらの名前になっているので、呼び出す側がそれぞれのクラスの実装を知っている必要があった。いうパブリックメソッドを実装している(暗黙的に"Startable"インターフェースを実装している)とすれば、こうできる。始めたブログも気づけば10年を超えてました。(bloggerから移転)ブログを書くことで自分と向き合っています。代ゼミ!第一志望は、ゆずれない。トップに戻るプライバシーポリシー・免責事項お問い合わせ未来世紀アラカワ引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。