「実装パターン」(Kent Beck著)より
「よいコード」書いてますか?
「よいコードを書くこと」って当たり前のように思えますが、あえて今回少し深く考えたいのです。
そのまえに、
「よいコード」とはなにか?
いろいろな解釈があるかもしれませんが、ここでは、「実装パターン」で定義されている「他人が読んでわかるコード」が「よいコード」としています。
「よいコードを書くこと」を書くことがなぜ重要なのか?
「実装パターン」でKent Beckは2つの理由を挙げています。
一つ目は経済的な効果のため。他人も読めるコードを書けば、コードの解析にかかる時間を減らせ、結果変更コストが減らせるというもの。このことについては別の機会に触れたいと思います。
意外だったのは2つ目。人間的な効果のため。
驚くことに、Kent Beckはそもそも
「よいコードを書くこと」という前提はかなりあやうい
と言っているのです。
その理由は、
読むに耐えないコードが大金を稼いでいる場面を何度も見てきた。
からだそうです。そういえば、かのFacebookだって、元は汚いコードだったと聞いています。
では、なぜKent Beckは「よいコード」を書くことにこだわるのか?
それは、「実装パターン」の「まえがき」と「第4章 動機」に繰り返し書かれていますので、いくつか引用しましょう。
コードを書くこと自体が喜び
誇りを持ちたい
コミュニティの一員として認められたい
そのコードを他の人が理解し、評価し、使用し、拡張してくれれば、さらに喜びが増す。
エンジニアとしてお金をもらっているのに対してどのようにお返しすればよいか。
人として、仕事をするとはどういうことか?そういうことが問われているのかと思います。
なんだか自己啓発的な話しのような気もしますが、実際、どんなに売れてるプロダクトでも、それに新機能を追加するとき、バグを改修するとき、読むのが大変なコードだったら大変な思いをしますし、似たような経験を持つ人も多いのではないでしょうか?
ここまでの話しで中には、そんなこと常識だし、自分はやってるよ!なんて人もいるかもしれません。しかし、他人がわかるコードを書くというのは意外と難しいことです。とKent Beckも言っています。
「第1章:はじめに」から引用します。
コードを作成することは喜びだが、私は自己中心的な人間である。自分と同じように他人も大切だと気付くまでは、他人に伝わるコードはかけなかった。・・・他人を気に掛けるというのは、意識的な決定であり、練習しないと身には付かない。
練習しないと身に付かないんですね。
自己流で、なんとなくコード書いているのではだめなんです。
理想のフォームがあって、それを繰り返し練習してやっと身につくものなんです。
もういちど、「よいコード」書いてますか?
最初に書いたよいコード書いてますか?という問いはこう言い換えられると思います。
経済的効果・人間的効果を得るために、他人を意識したコードを書く練習をしていますか?
もし、まだできていないのならば「実践パターン」で理想のフォームを確認してみることをお勧めします。(絶版中なんですけどね。。。復刊しないかな。。。電子書籍で。)