📕

【読書録】リーダブルコード―より良いコードを書くためのシンプルで実践的なテクニック

2023/12/06に公開

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) (Dustin Boswell 著  角 征典 訳/株式会社オライリー・ジャパン・2018)

https://amzn.asia/d/5zMNWn0

要約

いかに読み手にコストを割かせないコードを書くかを説明した本。

目次

第 I 部  表面上の改善
第 II 部  ループとロジックの単純化
第 III 部 コードの再構成
第 IV 部  選抜テーマ

気になった箇所

命名について

  • 明確な単語を選ぶ
     →ループイテレータ (for文のiとか)
      イテレーターが複数ある時は。 i,j,k ではなくclub_i,members_i,users_iを使う

  • 汎用的な名前を避ける(あるいは、使う状況を選ぶ)

  • 抽象的な名前よりも具体的な名前を使う

  • 接尾辞や接頭辞を使って情報を追加する

  • 名前の長さを決める

  • 名前のフォーマットで情報を伝える

  • 文字数に関する命名をするときは length > charsが望ましい

コードの書き方について

「似ているコードは似ているように見せる」

コメントについて

コメントの目的は、書き手の意図を読み手に知らせることである。

コメントすべきではないこと=コードを見ればすぐにわかること

コメントすべきこと

  1. 自分の考え → →コードの経緯を知らせることで読み手の理解するための時間を削減できる
  2. 今後の課題 → 例) // TODO: もっと高速なアルゴリズムを使う
  3. 定数の値の説明 → 例)// 合理的な限界値。人間はこんなに読めない。
     const int MAX_RSS_SUBSCRIPTIONS = 1000;

DRYの法則

DRY(Don’t Repeat Your Self:繰り返しを避けること)→コードを重複させない

無関係の下位問題を抽出する

= 一つの関数で行うタスクは一つ

  1. 関数やコードブロックを見て「このコードの高レベルの目標は何か?」と自
    問する。
     →関数の目的と手段を明確にする
     →手段のコードは別の関数にする

  2. コードの各行に対して「高レベルの目標に直接的に効果があるのか? ある
    いは、無関係の下位問題を解決しているのか?」と自問する。

  3. 無関係の下位問題を解決しているコードが相当量あれば、それらを抽出して
    別の関数にする。

全てのまとめ = 「最も読みやすいコードは、何も書かれていないコードだ。」(暴論)

感想

「似ているコードは似ているように見せる」
この言葉を聞いてデザインの基本原則「近接」「整列」「反復」「対比」を想起した。

「リーダブル」とは誰に対してか?という問いに筆者は、「コードを次に読む人に対して」だと述べている。そう!つまり、読みやすいコードを書くという行為は読み手(=ユーザー)に如何に楽してコードを理解させるかを考える行為であると言い換えることができるし、もっと大胆な言葉を使うならば、それはUI/UXを考える行為だと言ってもいい。

つよつよUXエンジニアを目指す自分にとってこの考え方はかなり新鮮だった。
エンジニアにとってUXの高いサービスを作ることは、まず読みやすいコードを書くことから始まるのだ。

プロダクトの中心には必ず「使う人」がいるように、コーディングの中心に「読む人」を意識してコードを書いていきたい。

「最も読みやすいコードは、何も書かれていないコードだ。」
この言葉はかなり暴論ではあるけれど、本質的でコーディングの最終目標であることは常に覚えておきたい。

Discussion