『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)』という本を再読しています。今日は、コードの表面上の改善について印象的な内容をメモしておきます。
コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。
- 常に「このコードは理解しやすいだろうか?」と自問自答する
- tmpやretvalのような名前をつけるのは基本的には避ける
- 変数名に単位や重要な属性を追加する(例:size → size_mb, html → html_utf8)
- ブール値の変数名にis, has, can, shouldなどの接頭辞を使う
- 名前を否定形にするのは避ける(例:"disable_ssl = false" → "use_ssl = true")
- 一貫性のあるスタイルは「正しい」スタイルよりも大切
- コードを理解するのに役立つものなら何でもいいからコメントを書く
- 定数を定義するときには、なぜその値を持っているのかを書く
- 今後コードをどうしたいのかを書く
常に「このコードは理解しやすいだろうか?」と自問自答する
私の場合は「このコードは本当に書く必要があるのだろうか?」と自問するようにしています。そして数日経ってから「何でこんなコードを書いてしまったんだろう?」と自問しています…。
tmpやretvalのような名前をつけるのは基本的には避ける
向こう数行で再代入されるならまだしも、20行ぐらい経ってtmpが再登場すると「このtmpってどんな意味だっけ?」と逆戻りする羽目になってしまいます。
変数名に単位や重要な属性を追加する(例:size → size_mb, html → html_utf8)
「変数名を短いコメントだと思え」とはよく言ったものです。
ブール値の変数名にis, has, can, shouldなどの接頭辞を使う
しばしば見かけるxxx_flag
のような変数名だと誤解を生むことがあります。
名前を否定形にするのは避ける(例:"disable_ssl = false" → "use_ssl = true")
disable_ssl = false
のような否定の否定は読んでいて疲れてしまいますね。
一貫性のあるスタイルは「正しい」スタイルよりも大切
同時にPEP8(Pythonコーディング規約)には「一貫性にこだわりすぎるのは、狭い心の現れである」というお言葉があります。
程よく一貫性を持たせたいものです。
コードを理解するのに役立つものなら何でもいいからコメントを書く
これは私もよくよく言われることです。冗長になってもいいから、取り敢えずコメントを書いてみることが大切ですね。
定数を定義するときには、なぜその値を持っているのかを書く
// 合理的な限界値。人間はこんなに読めない。 const int MAX_RSS_SUBSCRIPTIONS = 1000;
なぜその値を設定したのかが読み手に伝わります。
今後コードをどうしたいのかを書く
TODO: あとで手をつける FIXME: 既知の不具合があるコード HACK: あまりキレイじゃない解決策 XXX: 危険!大きな問題がある
FIXME
と書いておくと、ふらっと席に立ち寄った同僚が助けてくれることがあります(経験談)。ちなみにエディタによっては、コメントのTODO
などの部分をハイライトしてくれる機能がありますね。
本記事では、『リーダブルコード』からコードの可読性向上に役立ちそうな内容を9つピックアップして紹介しました。
最後までお読み頂きまして、ありがとうございました。
コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。
コメント