読めないコードは書き直せ [プログラマー現役続行]
第4章「読みやすいコードを書く力」からの引用です(p.79)。
読めないコードは書き直せ
もちろん、コメントやドキュメントを書くこと自体を否定するつもりはありません。
ただ、本来コメントやドキュメントというものは、プログラムが十分読みやすく書かれていることを前提に、プログラムを読んだだけではわからない事柄を補足するために書くものであって、読みやすさを考慮していない複雑なプログラムを読むための手がかりとして書くものではありません。
つまり、読めないプログラムにコメントやドキュメントを書くぐらいなら、プログラムそのものを読めるように書き直すべきです。そして、可能なら、最初から読みやすいプログラムを書くべきなのです。
しかし、ほとんどの人は、最初から読みやすいプログラムを書くことはできません。
なぜなら、「どのようなプログラムが読みやすく、どのようなプログラムが読みにくいか」を認識していないと、自分が書いているプログラムが他人にとって読みやすいかそうでないかを、自分で判断することはできないからです。
そのため、自分では読みやすいプログラムを書いているつもりでも、実は他のエンジニアにとっては読みにくいプログラムを書いてしまうのです。
この判断能力を身につけるには、自分が書いたコードを他のエンジニアにレビューしてもらうのが最適ですが、どうすれば自分のプログラムを改善できるかを、書籍を通して学ぶことも有効です。お勧めの書籍としては、『プログラミング作法』『コードコンプリート第2版』『リファクタリング』『クリーンコード』『実装パターン』などがあります。
レビューしてもらったり、本を読んだりして、常に読みやすいコードを書くことを意識して行う必要があります。そして、意識して行うことを継続することで、無意識に読みやすさに注意を払うようになるまで習慣化することが必要です。
プログラムは「臭う」
初心者にはわからないかもしれませんが、ソースコードを見たり、UMLで描かれたクラス図を見たりしていると、「何か臭う」ことがあります。ある程度きちんとしたソフトウェア開発経験を積んでいる人の成果物であっても、「少し臭う」ことがあるかもしれません。
その場合、「何か臭うな」と感じて、プログラムの動作や、さまざまな境界条件を考慮しながら、頭の中でそのプログラムを実行すると、間違いや抜け漏れに気づく場合も少なくありません。
あるいは、間違っていなかったとわかる場合もあり、その場合には、なぜ臭いを感じたのかを検討し、臭わないようにプログラムの改善方法を考えたりします。
一方で、プログラミング経験が浅い人や、プログラムの読みやすさに注意を払わないで長年ソフトウェア開発を行ってきている人のプログラムなどは、「悪臭」を放っている場合があります。
ソフトウェアの設計やプログラムの臭いに対する最低限の嗅覚を身につけるには、個人差はありますが、数年は要します。
これは新卒などに限った話ではなく、変な癖がついてしまった中堅の人たちにも当てはまります。むしろ、変な癖を身につけてしまっている分だけ厄介かもしれません。 幸運にも職場の先輩で優れた人がいる場合には、悪臭を放たないソフトウェアを開発するために、いろいろとレビューしてもらったり指導してもらったりすることができるかと思います。
そうでない場合には、書籍等で学習し、それを日々のソフトウェア開発に自分で意識しながら応用することで、地道に身につけていくしかないかもしれません。
書籍としては、最低限以下の書籍を読んで、自分自身でソフトウェア開発に応用する努力を行ってもらう必要があります。
『プログラミング作法』は、ソフトウェア開発に関係するさまざまな観点からまとめられています。
- プログラミング作法
- 達人プログラマー
- リファクタリング
- アジャイルソフトウェア開発の奥義
- コードコンプリート第2版
- パターン指向リファクタリング入門
- クリーンコード
- 実装パターン
『達人プログラマー』には、実践的なプログラマーが心がけて、日々のソフトウェア開発に応用すべきことが書かれています。
『リファクタリング』には、ソフトウェアの機能を変更することなく、プログラムの構造をどのように改良するかについて書かれています。そして、書かれているリファクタリングの手法の多くが、EclipseなどのIDEによってサポートされています。
『アジャイルソフトウェア開発の奥義』には、オブジェクト指向開発において習得しておくべきさまざまな設計に関する事柄がまとめられています。
『コードコンプリート第2版』では、プログラムの読みやすさについて、プログラミングのさまざまな観点からまとめられています。
『パターン指向リファクタリング入門』では、プログラムをリファクタリングすることでデザインパターンを適用するという観点から、多くのリファクタリング手法が紹介されています。
『クリーンコード』では、読みやすくクリーンなコードとはどのようなコードであるかを、豊富な例を用いて説明しています。
『実装パターン』は、著者のケント・ベック氏がコードを書くときに、なぜそのような書き方をするのかをまとめたものです。サンプルコードが少ないので、初心者向けではありませんが、多くの観点が紹介されています。
職業としてソフトウェア開発に従事する以上は、このように多くの良書から、自分自身で技術を習得していく必要があります。ここで紹介した書籍は、いずれも1998年以降に原著や翻訳本が出版されたものです。
しかし、実際のソフトウェア開発の現場では、継続して自己学習する習慣が身についていない人の場合、せいぜい書名を聞いたことがある程度でまったく読んだことがないという人も、残念ながらかなり多いのではないかと思います。
2014-03-20 08:25
コメント(0)
コメント 0