社会人のメモ帳

忘れたくないことアレコレ

リーダブルコード 書評

よりよいコードを書くためのテクニック

情報

著者:ダスティン・ボズウェル/トレバー・フォシェ

訳者:角征典

発行:2012年6月22日

目次

  • 理解しやすいコード
  • 名前に情報を詰め込む
  • 誤解されない名前
  • 美しさ
  • コメントすべきことを知る
  • コメントは正確で簡潔に
  • 制御フローを読みやすくする
  • 巨大な式を分割する
  • 変数と読みやすさ
  • 無関係の下位問題を抽出する
  • 一度に1つのことを
  • コードに思いを込める
  • 短いコードを書く
  • テストと読みやすさ
  • 「分/時間カウンタ」を設計・実装する

書評などなど

IT業界に身を置くものならば、避けては通れないコーディング業務。C言語Java、html/cssPythonといった多岐に渡るプログラミング言語を記述するために、どれほどのプログラマーが頭を抱え、神経を擦り減らせ、数多の工数を捧げてきたか。

「プログラムなんて動けば良いだろ!」という方は、本著を読んで考え方を改めて欲しい。そして個人的には、全プログラマが本著を読んて欲しいとさえ思っている。

目次にて記載した表題のことを守ってくれるだけで、どれほど多くのプログラマが救われるか。プログラマが意識すべきは「動くこと」だけではなく、その後のプログラマが引き継いだ際に読みやすい「分かりやすさ」に加え、後から変更や追加をしやすい「保守性」に、「テストのしやすさ」などまで考えて書くべきなのだ。それを声を大にして言いたい。

プログラムが動くなんて、そんなの設計した通りに書けば動くのが当たり前なのだ。仕事を頼みたいプログラマと、そうでないプログラマの差というのは、「プログラムをどこまで明瞭に分かりやすく書くか」ところなのではないだろうか。

しかし、それらは勉強しようにも難しい。そこで役に立つのが本著である。

 

開発現場には部署ごと、会社ごとに「コーディングルール」というものが作られている(なければ逃げよう)。変数名や関数名を決める上でのルール、インデントやカッコ位置などを明確に定めておくことで、プロジェクトのコードの記載を統一させることが目的だ。

基本的なプロジェクトでは、そういった最低限のルールというのは守るように定められている。プロジェクトによって、どこまで決められているかはマチマチだろうが、本著では変数名や関数名に関して、「どうすれば分かりやすいか」がきっちりまとめられている。

例えば。

本著の第二章「名前に情報を詰め込む」にて、『「get」はあまり明確な単語ではない』と説明されている。「Get」という単語は、「入手する」「手に入れる」という意味があり、関数名として使われることが多い。

しかし、それだけでは「どこから入手するのか」「どのように入手するのか」といった情報が分からない。何も考えず「Get」を選ぶのではなく、「Download」や「Fetch」といった単語を選択した方が分かりやすい場合がある。

他の例として、「Find」は「Deliver」「Dispatch」「Announce」「Route」といった風に変えた方が分かりやすいことがある。あくまで分かりやすいことがある、という意味合いが大切だ。要は適当ではなく、その関数の意味、どういう使い方をするのかということを、関数名から一発で分かるようにするべきだと説明している。

命名に関することのみならず、コメントや順番などに一工夫することで、分かりやすさは向上する。そういった工夫の選択肢が、読み進めるだけで学ぶことができる。一度読んだだけでは分からないことも、プロジェクトを進めながら、もう一度読み返してみると新たな発見があったり、発想のきっかけになることが多い。

 

本著の凄いところは、どのプログラミング言語でも役に立つヒントであるということが上げられる。Pythonなどでは、インデントもプログラムの一部であり有無次第で挙動が大きく変わる。改行もそうだ。改行の数次第では処理速度が変わるプログラム言語も存在する。

そういったプログラム言語の差異も吸収し、あくまでプログラミングする上で意識すべき発想をまとめているため、どのプログラミング言語を書く際にも役に立つようになっている。

とりあえずコーディングをする人は本著を読んで欲しい。