読みやすいコードには、ちゃんと理由がある。
あなたは、他の人が書いたコードを見て「何これ、全然わからない」と感じたことはありませんか?
逆に、初めて見るはずなのにスラスラ読めて「書いた人、頭いいな」と思ったコードに出会ったことはないでしょうか。
この差は、才能ではありません。
センスでも、経験年数でもない。
読みやすいコードを書く人には、ある共通した「習慣」があるんです。
プログラミングを教える立場になって、受講者のコードを毎日のように読み続けるうちに、そのことに強く気づきました。
読みやすいコードには、明確な共通点があります。
しかも、その共通点はどれも「地味」なものばかりです。
華やかな技術でも、難解なアルゴリズムでもない。
まず、一番大きな共通点は「名前付け」です。
変数や関数に、何をするものなのかが一目でわかる名前をつけているコードは、それだけで理解のスピードが段違いに変わります。
たとえば「x」や「tmp」という名前より、「userAge」や「filteredList」という名前の方が、読んだ瞬間に意味が伝わりますよね。
実は、これができていないコードが驚くほど多い。
受講者のコードをレビューしていると、多くのケースで名前付けの改善だけで読みやすさが劇的に上がると感じます。
名前は、コードにとっての「看板」なんです。
良い看板のある店は、外から何屋さんかすぐわかる。
それと同じです。
次に重要なのが、処理をシンプルにまとめることです。
一つの関数や処理ブロックに、あれもこれも詰め込みすぎると、読む側は混乱します。
「この関数、何をしたいんだろう?」と首をかしげながら読む経験、ありませんか。
理想は、一つの関数が一つのことだけをやっている状態。
これを意識するだけで、コードの見通しが驚くほど良くなります。
反対に、一つの関数が何十行にもわたって、あちこちで色々なことをやっているコードは、読んでいるだけで疲れてしまいます。
さて、もう一つ見落とされがちなポイントがあります。
それは「スコープを狭く保つ」という考え方です。
変数が使われる範囲が広ければ広いほど、「この変数、今どんな状態なんだっけ?」と追いかけるのが大変になる。
頭の中でたくさんのことを同時に追わなければならない状態って、正直しんどいですよね。
スコープを狭く保つことは、読む人の頭の負担を減らす、いわば「思いやり」の設計です。
コードを書くのは機械に向けてだけじゃなく、未来の自分や仲間に向けても書いているんだと、そう思うようになりました。
それから、条件分岐の多さも読みやすさに大きく影響します。
if文がネストして入り組んでいるコードは、まるで迷路のよう。
どの条件で何が起きるのかを追うだけで、エネルギーを使い果たしてしまいます。
分岐を減らす工夫、たとえば早期リターンを使ったり、条件をシンプルに整理したりするだけで、コードの読みやすさは大きく変わります。
「なんかうまく動かない」と感じるコードの多くは、この分岐の複雑さが原因だったりします。
そして、もう一つ外せないのが「重複をなくす」ことです。
同じような処理が何か所にも書かれているコードは、修正するときに地獄を見ます。
一箇所直したら、別の場所も直して、さらに別の場所も……という経験をしたことがある人も多いのではないでしょうか。
同じことは一箇所にまとめる。
この原則を守るだけで、コードの保守性が格段に上がります。
また、小さく分割して再利用できる形にしておくことで、将来の自分がとても楽になります。
実のところ、こうした基本は、プログラミングを始めたばかりの人には「地味すぎてピンとこない」と言われることもあります。
講義の中でこれらを伝えると、最初は「そんなこと?」という反応が返ってくることも正直あります。
でも、現場で何千行ものコードと格闘したとき、チームで同じコードを修正しなければならなくなったとき、初めて「あのとき教わっておいてよかった」と感じる人が多い。
基本の積み重ねは、後から必ず効いてきます。
かつて、うまくいかない時期に「もっとかっこいい技術を使えば解決できる」と思っていたことがあります。
でも、実際に立ち止まって自分のコードを見直したとき、問題の多くは派手な技術ではなく、こうした地道な基本ができていないことにあると気づきました。
それ以来、基本を大切にすることが、技術への向き合い方の軸になっています。
どんなに新しいフレームワークや言語が出てきても、読みやすさへの配慮という土台は変わりません。
読みやすいコードは、自分のためでもあるし、一緒に働く誰かのためでもあります。
名前付け、シンプルな処理、狭いスコープ、少ない分岐、重複をなくすこと。
どれか一つでも意識してみると、きっとコードが変わります。
そして、コードが変わると、仕事の進め方も、チームの雰囲気も、少しずつ変わっていきます。
あなたのコード、今日から少し変えてみませんか。
小さな一歩が、大きな違いを生みます。