📖

【リーダブルコード】考えをコードにする

に公開

🧠 はじめに:考えをコードに落とし込む

“難しいことを解決できることと、難しいことをわかりやすく説明できることは別物である”

✨ 良いコードとは?

「良いコード」とは、読む人が理解しやすいコードのことを意味します。単に動作するコードではなく、「何をしようとしているのか」が自然と伝わるコードこそが理想です。

読みやすいコードを実現するためには、以下の要素が重要です:

  • 明確な変数名・関数名
  • 意図を表現するコメント
  • 大きなロジック単位の整理(オブジェクト構成)
  • 曖昧な代名詞の排除(例:「それ」、「このコード」など)

💬 抽象から具体へ:論理を明確に説明する

複雑なロジックは、自然言語での説明を通じてシンプルに構造化できます。

📄 元のJAVAコード

boolean isAdmin = isAdminRequest();

if (document != null) {
    if (!isAdmin && !document.getUsername().equals(currentUser.getUsername())) {
        throw new UnauthorizedException();
    }
} else {
    if (!isAdmin) {
        throw new UnauthorizedException();
    }
}

// 続行してページをレンダリングする...

✅ 自然言語による仕様整理

許可される条件は以下のいずれかです:

  1. 管理者である
  2. ドキュメントが存在し、かつその所有者が現在のユーザーと一致している

それ以外は未許可。


🛠 Javaで書き直した改善コード

boolean isAdmin = isAdminRequest();
boolean isDocumentOwner = document != null && document.getUsername().equals(currentUser.getUsername());

if (isAdmin) {
    // 許可:管理者
} else if (isDocumentOwner) {
    // 許可:ドキュメントの所有者
} else {
    throw new UnauthorizedException();
}

// 続行してページをレンダリングする...

🔍 解説

  • isAdminRequest()isDocumentOwner のような意図を表す変数名を使うことで、読者はコードを読む前に意図を理解できます。
  • ネストを浅くし、例外処理を先に書くことで、ロジックの本質がより浮き彫りになります。
  • if-else の構造を、「仕様に沿って」並べ替えたことで論理と一致します。

📝 Chapter 12 のポイントまとめ

  • まずは文章で仕様を説明せよ

    • 自然言語での説明は、思考を構造化する手助けになる。
  • その後にコードに変換せよ

    • 自然文と一致する構造をコードに持たせることで、読む人が理解しやすくなる。
  • 「何をしているか」よりも「なぜそうしているか」を伝えよ

    • コードの背景や意図を感じ取れるようにすることが、読みやすさに直結する。

✏️ おわりに

Chapter 12 では、仕様を説明する「語り」のようなアプローチをベースに、コードに変換するテクニックが紹介されています。「説明→コード」という手順を意識することで、より読みやすい・意図が伝わるコードが書けるようになるでしょう。

コードを書く前に一度文章で整理してみる習慣を、あなたの開発にも取り入れてみてください。

Discussion