『Java言語で学ぶデザインパターン入門』を読んだ&Pythonで書いてみた
リアクティブプログラミングが流行ってるみたいだからちょっとやってみるか、と調べてみたら、Observerパターンとかいうのが出てきた。でもデザインパターンとかわからん\(^o^)/
というわけで読んでみた。ただ読むだけだとつまらないので、JavaのサンプルコードをPythonで書いてみた。
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/19
- メディア: 大型本
- 購入: 51人 クリック: 762回
- この商品を含むブログ (400件) を見る
PythonのコードはGitHubに上げてあるので、興味のある方はどうぞ。
who-you-me/design_pattern · GitHub
読んでみて、Pythonで書いてみて感じたこと
外から叩けるメソッドはできるだけ少なくして、意図しない操作をされるのを防ぐべきだよ! みたいなことが何度も書かれていたけど、Pythonだとそこを意識することはあまりない。というか、メソッドや変数のアクセス権についてあまり気を配っていない(少なくとも入門書のレベルでは)ように感じる。
そこはまあ、Pythonに限ったことじゃなくて動的言語全般にある程度共通していることで、「大規模でメンバーの技量がバラバラなプロジェクト/プロダクトは静的言語がよい」「少数精鋭でスピードが重要な場合は動的言語がよい」みたいなことが言われる背景でもあるんだろう。
「コードの一部への変更が他の部分に意図しない影響を及ぼす」のに対処する必要があるけど、静的言語の場合は型に守られてるから安全、一方で動的言語の場合はテスト書いてカバーする必要がある、という区別にも繋がってくる。
なんて、いろいろ思うことはあるけど、名著だけあって身になることが多かった。軽く列挙。
- 当たり前だけど、クラスの設計って超大事
- 普段フレークワークを使ってWeb開発してるばかりだと、実はあまり気付かない
- パターンがたくさんあって、複雑なものもあり覚えるのは難しいけど、こんなのがあるって知るだけでも役立ちそう
- 何か設計上の問題にぶち当たったとき「あれ、そういえばこんなデザインパターンがあったような…」と気付いて調べられるかどうかでものすごい違い
- Pythonでちゃんとオブジェクト指向やるためのもろもろがわかった
- これは本のおかげというよりは、自分で書いてみたからだけどw
- Python2.6からabcモジュールが追加されて抽象クラスが作れるようになった
技術的負債が溜まりに溜まったコードとお付き合いすることが多いこともあって、最近は最先端技術を追っかけるよりも、「ちゃんとした設計でものを作る」ことに興味が移りつつある。
特にデータモデリングの重要性なんかは痛感しつつあるので、次はこれとかを読みたい。
理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)
- 作者: 奥野幹也
- 出版社/メーカー: 技術評論社
- 発売日: 2015/02/27
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る