Hatena::ブログ(Diary)

yvsu pron. yas このページをアンテナに追加 RSSフィード

2010-11-26

きれいなソースコードを書くために読んでおくべき本10冊

なんか、プログラマとして必要な本をあげるのが流行っているようなので、自分も書いておこう。きれいなソースコードを書くために読んでおくべき本10冊。

最初リファクタリング


以上。終了。10冊じゃないか(^^;

きれいなソースコードを書きたければ、一にも二にもリファクタリング、それしかない。


後は、良いソースコードを読みながら自分でも、実際にプロダクトを作ってみること。OSSとして公開すると、自然と良いコードを書こうというモチベーションが上がるのでオススメ


読んで欲しいと思うソースコードは、JUnitソースコードテストJUnitダウンロードサイトに行くと下の方にあるzipのやつがそうです。

きれいな」というのは、かなり主観的なものなので、きれいなソースコードというものを客観的に言うのは実は難しいんだけど、「きれいなソースコード」というのを「テストしやすいソースコード」といいかえることで、客観的に話ができるようになると思います


きれいなソースコード」=「テストしやすいソースコード」に、違和感を持つ人もいるかも知れないけど、自分経験上これはかなりの確率で当てはまります

なぜかというと、テストしやすいコードというのは、モジュール同士は、疎結合であることがほとんどです。密結合だとテストしにくくなるから。

疎結合コードは、必要なコードは一箇所に集まりやすくなるので、読みやすくなるのです。疎結合かつ高凝集ってことですね。


だから、ソースコードを読むときには、テストコードも一緒に読んでほしい。テストしやすくなることが、きれいなソースコードにつながることを実感して欲しい。それには、JUnitソースコードテストを読むのが一番です。


本を読むことも重要だけど、たくさんソースコードを読んで、テストしやすくすることを意識しながらたくさんソースコードを書いたほうが、きれいなソースコードがかけるようになるということです。


実は、自分は、kisのところに書いてある本は一冊も読んだことがありません(^^;

2010-11-25 - きしだのはてな

2010-11-26 - きしだのはてな

まぁ、プログラマとして実力をつけることときれいなソースコードがかけるようになることはイコールじゃないけどね。


勘違いしてほしくないのは、本を読むことが重要ではないということではないことです。

本を読むことも重要だけど、たくさんソースコードを読んで、テストしやすくすることを意識しながらたくさんソースコードを書いたほうが、きれいなソースコードがかけるようになるということです。


自分の書いているソースコードはこんな感じですね。

http://code.google.com/p/slim3/source/browse#svn/trunk/slim3/src/main/java/org/slim3/datastore


きれいなソースコードをかけるようになるためにデザインパターンも知ってたほうがいいんじゃないのという人もいると思いますが、デザインパターンはきちんと学んだ上で、いったん軽く忘れたほうがいい。

軽く忘れるというのは、コードを書いているときに、そういえば、このパターンデザインパターンのあれに似てるなぁと思い出せるくらいに忘れるということです。思い出せたらそれは使うようにしましょう。

デザインパターンが常に頭に常駐している状態でコード書くと、無駄に複雑になっちゃうんだよね。

デザインパターンは、ある程度複雑な問題をきれいに解くために考えれたものですが、もともと簡単なものに適用すると無駄に複雑になってしまうためです。


たくさんソースコードを読んで、テストしやすくすることを意識しながらたくさんソースコードを書くと、きれいなソースコードがかけるようになります


大事なことなので三回言いました(^^;

ttmmrrttmmrr 2010/11/26 19:15 守破離ですね。

anchan828anchan828 2010/11/27 19:54 ソースコードを拝見させていただきました
まだ本当のさわり部分しかやってないのでさっぱり…
ですが今後の参考にさせていただきます

tuto0621tuto0621 2010/12/02 10:35 ソースを読もう、という文章は良く見かけるけど、このソースを読むといいよ、というおすすめはなかなか無いので嬉しいです。JUnit、読んでみます。

reppivreppiv 2011/01/25 06:00 私まさに「本は読んでもソース読まない」状態でした。

http://amazon.jp/dp/477412950X
この本の3章で、JUnitのソースコードリーディングを扱っています。
以前知人から勧められて買ったのですが、流し読みしただけでちゃんとソースまで見ていませんでした。
改めてJUnit勉強しようと思います。

snaka72snaka72 2011/05/25 12:35 >守破離ですね。
デザインパターンにしろ何にしろ、新しいテクニックとかを実際の顧客に提供するプログラムに導入する前に、プロトタイプなどで「守破」の域までもってって、実践では「離」のレベルで投入しないといけないよなー。
って思ってる。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証