📖
【リーダブルコード】考えをコードにする
🧠 はじめに:考えをコードに落とし込む
“難しいことを解決できることと、難しいことをわかりやすく説明できることは別物である”
✨ 良いコードとは?
「良いコード」とは、読む人が理解しやすいコードのことを意味します。単に動作するコードではなく、「何をしようとしているのか」が自然と伝わるコードこそが理想です。
読みやすいコードを実現するためには、以下の要素が重要です:
- 明確な変数名・関数名
- 意図を表現するコメント
- 大きなロジック単位の整理(オブジェクト構成)
- 曖昧な代名詞の排除(例:「それ」、「このコード」など)
💬 抽象から具体へ:論理を明確に説明する
複雑なロジックは、自然言語での説明を通じてシンプルに構造化できます。
📄 元のJAVAコード
boolean isAdmin = isAdminRequest();
if (document != null) {
if (!isAdmin && !document.getUsername().equals(currentUser.getUsername())) {
throw new UnauthorizedException();
}
} else {
if (!isAdmin) {
throw new UnauthorizedException();
}
}
// 続行してページをレンダリングする...
✅ 自然言語による仕様整理
許可される条件は以下のいずれかです:
- 管理者である
- ドキュメントが存在し、かつその所有者が現在のユーザーと一致している
それ以外は未許可。
🛠 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