Persistence

技術メモなど

『Rubyによるデザインパターン』を読み終えて

前回の記事で、"まだまだRubyが分かっていない"と思い知らされたので、2年半ほど前*1に購入して積み本になっていた『Rubyによるデザインパターン』を1週間ほどで読みました。

Amazon.co.jp: Rubyによるデザインパターン: Russ Olsen, ラス・オルセン, 小林 健一, 菅野 裕, 吉野 雅人, 山岸 夢人, 小島 努: 本

また、読んだだけではすぐに忘れてしまうので、後から必要なパターンを探し出せるように本書の内容をまとめておきました。

qiita.com

本書が一貫して伝えていること

  • 良いプログラムを書くには、プログラムの結合度を小さくして柔軟性を高める必要がある。そのためには、「継承よりも委譲を使う」「関心事を分離する」「変わるものと変わらないものを分離する」などをすると良い。
  • 必要になるまで作るな(YAGNIでお馴染み)。
  • パターンの使いどころを誤るな。誤った使い方をしたパターンはよりプログラムを複雑にする。

感想

  • 私のように、Ruby(あるいはオブジェクト指向言語)の継承や委譲、ポリモーフィズムの説明的な知識はあるが、実際にどう使えばよいか分からないという人には非常に参考になりました。
  • 1つ1つのパターンを、最小の実装から徐々にリファクタリングしていくので理解しやすく、フルスタックではなく必要最小限で再利用することもしやすく書かれています。
  • 元祖デザインパターンGoF本をただなぞるのではなく、Rubyの場合はこういう書き方ができるということを説明しているので、「より高度なRubyの機能」や「Rubyらしい書き方とは何か」ということも同時に分かるようになっています。

次のステップ

  • 前回の記事で作ったRubyGemをデザインパターンに当てはめて再構築する。
  • Rubyについてもっと勉強する。特にProcオブジェクトをちゃんと理解する。

*1:私のAmazonの注文履歴による