プログラムの可読性を向上させる9つの心掛け

プログラミング

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)』という本を再読しています。今日は、コードの表面上の改善について印象的な内容をメモしておきます。

コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。

常に「このコードは理解しやすいだろうか?」と自問自答する

私の場合は「このコードは本当に書く必要があるのだろうか?」と自問するようにしています。そして数日経ってから「何でこんなコードを書いてしまったんだろう?」と自問しています…。

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つピックアップして紹介しました。

最後までお読み頂きまして、ありがとうございました。

コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。

コメント