自分用メモ
随時追記していく
リーダブルコードの内容
読みやすいコードを書くための習慣やテクニックが
とても簡潔にまとまっている
ビジネスマナーにおける「ビジネス文書の書き方」に共通する
日本語だろうがプログラミングだろうが、
「読み手に優しい書き方」というものがある
①理解しやすいコード
・「優れたコードとは何か。それは読みやすさである」この本のテーマ。→高度な文法を使うよりも、ずっと重要なこと
・コードは他の人が最短期間で理解できるように書く必要がある
・コードは短くした方がいい
→だけど「理解するまでにかかる時間」を短くするほうが大切
第一部 表面上の改善
②名前に情報を詰め込む
・明確な単語を選ぶ(ただし英語の知識が必要)・汎用的な名前を避ける(目的や値を表すものであるべき)
・接頭辞や接尾辞を使って情報を追加する(ミリ秒を表す変数に、_msを追加する等)
・名前のフォーマットで情報を伝える
③誤解されない名前
・英単語には曖昧なものが多いので、ネーミングは慎重に行う。・限界値、包括的、排他的範囲などを意識した名前にする
・ユーザーの期待に合わせる事を心掛ける
・複数の名前を検討する
④美しさ
・一貫性のあるレイアウト・似てるコードは。シルエットも似てるように見せる
・空行を使って、関連するコードをブロックでまとめる
⑤コメントすべき事を知る
・読み手の立場になって何が必要になるかを考える。そうでないものは書かない→はまりそうな罠を告知する
⑥コメントは正確で完結に
・「これ」や「それ」のような代名詞は避ける・コメントに含める入出力の実例を慎重に選ぶ
第二部 ループとロジックの単純化
ここからは少し深い。ループやロジックレベルの話。⑦制御フローを読みやすくする
・条件式は、左側が調査対象、右側が比較対象・括弧のネストは浅くする。
⑧巨大な式を分割する
・説明変数:読みにくいコードには敢えて変数を作り、説明する・「頭が良い」コードで1行にまとめて書くよりも、
複数行に分割して書いた方が何がしたいのか分かりやすい
・ロジックを正しく理解して、簡潔で優雅なコードを発見する
・変数や関数をうまく利用して巨大な式を分割する
⑨変数と読みやすさ
・役に立たない一時変数は削除する・変数のスコープを小さいものにする
第三部 コードの再構成
もう少し深い話⑩無関係の下位問題を抽出する
・関数の目的を明確にし、直接的に関係ないものは別の関数としてまとめる・純粋なユーテリティコードとして抽出すれば、別のPJTからも再利用できる
・改善も楽にできる
⑪一度に1つのことを
・一度に複数の事をやるコードは理解しにくい。・やることを整理して、分割すべき。
⑫コードに思いを込める
・自分よりも知識の少ない人が理解できるような、簡単な言葉で説明する能力が大切→コードも簡単な言葉で書くべき。
⑬短いコードを書く
・最も読みやすいコードは何も書かれてないコード・最も簡単に問題を解決できるような要求を考える
・定期的にすべてのAPI、モジュールを呼んで、ライブラリに慣れ親しんでいく
第四部 選抜テーマ
⑭テストと読みやすさ
・テストは似たコードが続く場合が多いので、読みやすさと保守性を高めやすい。→テストを読みやすく、保守しやすく作る
→大切でない詳細はユーザーから隠し、大切な詳細は目立たせるようにする。
・エラーメッセージを読みやすく自作する。
・テスト関数は、テスト対象やテスト番号などが分かるようにする
⑮「分・時間カウンタ」を設計・実装する
・外部の視点を得る:ユーザーフレンドリーかを確認する優れた手段→他の人にコードの第一印象を聞いてみる
→「他の人」には、6ヶ月後の自分も含まれている
リーダブルコードの活用方法
コードレビュー時に、
「これってリーダブルコードの◯◯だよね?」と引用でき
レビューの時間の短縮化が実現できる
リーダブルコードに書いてあることが全てのPJTに適用できる訳ではないが、
コーディングルールを考える際の指針にすることは出来る
リーダブルコードに関する雑学
コーディングルールを全く知らない場合、リーダブルコードを呼んで
一定の基準のコーディングルールを学ぶと良い
サンプルコードはC++、Python、JavaScript、Javaで記述されている
(C++の基本文法は知っておいた方が理解しやすい)
特定の言語に関するテクニックは殆どない
コンピュータ言語に共通の話題が殆ど
チームでリーダブルコードの読書会を行い、
チームで採用する考えをまとめ、テンプレート化するのも良い
備忘録メモ
リーダブルコードは、エンジニアなら誰もが知ってる共通概念っぽい
「新人に読ませたい本ランキング1位」とすら言われる事も
役立つテクニックが書かれてる
経験者にとっても、自分のコードを見直す上で役に立つ
コードをレビューする側からすると、
「まずは読んで下さい」となる
良いコードを書くには、英語力(単語力)が求められそう
ビジネス文書的な要素も含まれている(空白行など)
この記事へのコメントはありません。