プログラムコードを書き、テストをして動作を検証。正常に動くことが確認できた。
これでプログラムは完成か?それだけでは不十分です。
そのコード、ほかの誰かも読めるようになっていますか?
ほかの誰かが読めるコード(リーダブルコード)であることは、コードが正しく動くことと同じくらい、重要です。
『リーダブルコード』とは
なぜリーダブルコードが必要なのか
プログラマー必読の名著『リーダーブルコード』(The Art of Readable Code)。
優れたコードを書く考え方として、以下が述べられています。
- コードは理解しやすくなければいけない
- コードは他の人が最短時間で理解できるように書かなければいけない
コードは、あとでプロジェクトに参加してきた誰かが見ても、分かるようにする必要があります。
あるいは、自分の書いたコードをすっかり忘れた、6ヵ月後のあなたが見ても、理解できるコードである必要があります。
でなければ、変更したりバグを取り除いたりすることが、とても難しくなるわけです。
リーダブルコードのポイント3つ
「リーダブルコード」では、理解しやすいコードを書くための方法を、3つに分けて紹介しています。
- 表面上の改善
- ループとロジックの単純さ
- コードの再構成
順番に見ていきましょう
表面上の改善
初めはやりやすいところから。プログラムのロジックはいじらず、まずは見た目だけを改善します。
- 名前に情報を詰め込む
- 誤解されない名前にする
- 見た目を美しくする
- コメントを入れるべきところにコメントをいれる
- コメントを正確に簡潔に入れる
見た目だけなので、手間はかかりません。改善後もそのままテストは通るはず。まずはこの改善だけでも、コードは劇的に理解しやすくなります。
特にコメントは重要です。書籍の一説を引用。
プログラマの多くはコメントを書きたがらない。コメントをうまく書くのは大変だと思っているからだ。こうした「ライターズブロック」を乗り越えるためには、とにかく書き始めるしかない。自分の考えていることをとりあえず書き出してみよう。生煮えであっても構わない。
例えば、ある関数を作っていて、「ヤバい。これはリストに重複があったら面倒なことになる」と思ったとする。それをそのまま書き出せばいい。
// ヤバい。これはリストに重複があったら面倒なことになる
管理人の経験からいって、どんなコメントであっても、ないよりは数段マシです。コメントを書く癖をつけましょう。
ループとロジックの単純さ
コードを読みにくくする大きな要因、制御フロー、論理式、変数、について改善します。
- 制御フローを読みやすくする
- 巨大な式を分割する
- 変数を読みやすくする
制御構造は、ちょっと立ち止まって見直せば、意外と簡単な形に置き換えられることに気づいたりします。
また、マニアックな書き方をして、分かりにくくなっている場合も注意。書籍で紹介されている例。
// このキーのバケツを取得する。もしバケツがnullでなければ、中身が入っていないかを確認する
assert((!(bucket = FindBocket(key))) || bucket->IsOccupied());
// このキーのバケツを取得する。
bucket = FindBucket(key);
// もしバケツがnullでなければ、中身が入っていないかを確認する
if (bucket != NULL) assert(bucket->IsOccupied());
やっていることはどちらも同じですが、後者のほうが、すんなりと理解できますね。
コードの再構成
色々やりすぎてこんがらがるコードに対し、複雑な構造を単純化します。
- 無関係の下位問題を抽出する
- 一度に一つのことだけするように直す
- コードに思いを込める
- 短いコードを書く
ここまでくると、難易度が高いので簡単にはできません。
ただ、以下の考えは、意識しておくとよいです。
最も読みやすいコードは、何も書かれていないコードだ
理解しやすいコードにする最強の方法は、コードの量を少なくすることです。
余計な実装はしない、ライブラリを活用する。モジュールを小さく分割する…
コードはどんどん肥大化していきます。理解しにくくなったと感じてきたら、短くする方法を考えましょう。
「リーダブルコード」の使い方
『リーダブルコード』の内容は、コードを書いたことがなければ、ピンとこないかもしれません。
まずコードを書いてみて、そのあとにあらためて読み返してみましょう。
書いてあることが、身に染みて分かるようになるでしょう。
- まずはコードを書く
- 「リーダブルコード」を流し読みする
- ドキッとしたところがあったら、丹念に読み込む
- リーダブルコードの内容をもとに改善する
リーダブルコードのすべてに対応するのは、簡単なことではないです。
まずは、「表面上の改善」だけでも行ってみるのが、おすすめです。
まとめ
リーダブルコードには、重要なエッセンスがうまく凝縮されています。
一度でもコードを書いたことがある人なら、「身に覚えがある…」という箇所が必ずあるでしょう。
そう思ったときが、改善のときです。
プログラムのコードを書くことは、誰かに伝える文章を書くことと一緒です。
たとえどんなに良い中身の文章でも、人に伝わらなければ意味がありません。プログラムのコードも、誰かに伝える気持ちを持って作りましょう。
コメント