【書評】リーダブルコードを読んだ。なんでもっと早く読まなかったんだろう


リーダブルコード

誰だこんな読みにくいコード書いたの・・えっ、昔のオレ?

プログラミングをしている人なら、誰しも一度はこういった経験がありますよね。

他人の書いたコードにもこう思ったことがあるかもしれません。しかし同僚などから同じように思われている可能性もあります。

「リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック」では読みやすいコードを書くために必要なことが実例とともに記載されています。

なんでもっと早く読まなかったんだろうと思ったので、読んでためになった点と書籍のここが良かったという点をご紹介します。

リーダブルコードについて

リーダブルコードは著者の見てきた「ひどいコード」をサンプルに、読みにくいコードを理解しやすく改善するための原則や技法が約200ページほどで紹介されている書籍です。

リーダブルコードの内容は「はじめに」に書かれている以下の言葉が簡潔に表しています。

本書の目的は、読みやすいコードを書くことである。
その中心となるのは、コードは理解しやすくなければいけないという考えだ。

引用元:リーダブルコード はじめに

「読みやすいコード=自分にも他人にも理解しやすい」という考え方です。

リーダブルコードのここがとても良かった

リーダブルコードの良かった点です。

読みやすい

全体を通して語り口調で書かれており、楽しく気軽に読むことができます。あまり本を読むのが得意でない私でも3日ほどでストレスなく読むことが出来ました。

読みやすいコードを書くための本だけあって、リーダブルコード自体もまた読みやすく書かれています。

サンプルコードが豊富である

本書では各章ごとにテーマがあり、大体以下の流れでコードを読みやすくする手順が解説されています。

  • 読みにくいコードを挙げる
  • なぜ読みにくいのか、どうすれば読みやすくなるかを解説する
  • 改善したコードを挙げる

実際に修正前のコードと修正後のコードを見比べることで、どんなところが改善されたのかが理解しやすくなっています。

サンプルコードのプログラミング言語は一つではなくCC++JavaJavaScriptPythonPHPなど多くの言語が使われていますが、コードを読みやすくする手法については他の言語にも流用することができます。

リーダブルコードを読んでためになった点

たくさんありますが2点に絞ってご紹介します。

無理してかっこいいコードよりも読みやすいコードを書けば良い

今までコードを書く際、できるだけ短くしたいため三項演算子(? :)を使ったりif文の条件でand(&&)or(||)を多用したりすることがありました。

ただ三項演算子は後から見たとき理解に時間がかかることが多いため、個人的には無理して使っていたのですが本書でも同じことが書かれていました。

三項演算子(? :)・do/whileループ・gotoなどのプログラミング構成要素を使うと、コードが読みにくくなることが多い。代替となるものが必ずあるので、これらは使わないほうがいいだろう。

サンプルコードでは同じ結果を返す2つコードが以下のように比較されています。

読みにくいサンプルコードの例は以下です。

return exponent >=0 ? mantissa * (1 << exponent) : mantissa / (1 << -exponent);

一方、読みやすいサンプルコードの例は以下です。

if(exponent >=0){
	return mantissa * (1 << exponent);
} else {
	return mantissa / (1 << -exponent);
}

かっこいいコードよりも読みやすいコードが推奨されていることで、なんだか気分がラクになりました。

一度にたくさんのことをしないことの大切さ

11章では一度に複数のタスクを行うコードを、一度に1つのタスクを行うコードに分解する手法が紹介されています。

また12章では複雑なロジックを簡単な言葉で説明(できれば口に出して)し、それをコードに落とし込む手法が紹介されています。

これらはコードで他人に伝えるときだけでなく、日常のメールやブログを書くときにも使える手法だと思いました。

ふつうの日本語でも、一つの段落に文章がぎっしり詰まっているよりもいくつかの段落に分けたほうが読みやすいのと似ています。

まとめ

まるで先輩が教えてくれているかのような文章で読みやすい良書でした。

書籍の最後の解説には「実際にやる、当たり前にする、コードで伝える」ことで自然に読みやすいコードが書けるようになると記載されています。

同僚だけでなく未来の自分が理解できるコードを書くために、手に取ってみて損はない本です。