Alain Bachellier cc |
確か去年の夏頃に出会ったので、もうすぐ1年が経つんですね。
このスライドでは、真のオブジェクト指向プログラミングを実践するための方法が紹介されています。
例はC++で書かれているけど、JavaやRubyやJavascriptにも考え方はそのまま適用できます。
このスライドで紹介されている、Jeff Bay氏の「必然的にオブジェクト指向になってしまう、Extremeなコーディング規約」は、すぐに実践する価値があると思います。
Extremeとはいっても、それほど難しいことは言っていないので、すぐに取り組めると思います。
ただ自分の場合、この手法がなかなか身に付かず、簡単な
- #1 1つのメソッドにつきインデントは1つまでにすること
- #2 else句を使用しないこと
早期リターンを活用しインデントを浅くする手法なんて、言われてみればその通りなんですが、盲点でした。
else句もなるべく使わないようにして、とにかく条件分岐をシンプルにするよう心掛けただけで、自分のコードが明らかに読みやすくなったのは驚きでした。実践してみて、価値があったなと思いました。
- #3 すべてのプリミティブ型と文字列型をラップすること
最近友人が、「Javaの嫌なところは、Listにプリミティブ型が入れられないところ」と言っていて、これはオブジェクト指向でやってないから困ることになるんだよなぁって思いました。
個人的に感じるJavaの嫌なところは、リテラルがないことですね。
他にも#4〜#9まで挙げられていたのですが、どれも実例付きでわかりやすいです。
ただ、やはりすぐに全部を取り入れるのは難しいので、何度もこのスライドを繰り返し見て、少しずつ身に付けるようにしています。
特に、103ページ目からの実際に採用した簡単なバージョンは、ハードルが下がっていい感じです。
最近またこのスライドを見返して、やっぱりいいスライドだなぁと感じたので、自分のブログでも紹介させて頂きました。
是非、すべてのプログラマさんに見てほしいスライドです。
スライド中で紹介されていた書籍・資料・リンクまとめ
- ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション
- アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技
- Clean Code アジャイルソフトウェア達人の技
- プレファクタリング ―リファクタリング軽減のための新設計 (THEORY/IN/PRACTICE)
- リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
- パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法
- Scalaスケーラブルプログラミング第2版
- プログラミングF#
- ソースコードの品質向上のための効果的で効率的なコードレビュー (slideshare)
- Jeff Bayのオブジェクト指向エクササイズ全文(英語) (PDF)
- オブジェクト指向エクササイズのススメ (slideshare)
- Your code sucks, let's fix it - DPC UnCon (slideshare)