書籍「リーダブルコード」を読みつつ自分用のメモとしてまとめたので、備忘としても残しておく。
第三部 コードの再構成
10章 無関係の下位問題を抽出する
- 関数やコードブロックを見て「このコードの高レベルの目標は何か?」と自問する
- コードの各行に対して「高レベルの目標に直接的に効果があるのか? あるいは、無関係の下位問題を解決しているか?」と自問する
- 無関係の下位問題を解決しているコードが相当量あれば、それらを抽出して別の関数にする。
10章のキモは - プロジェクト固有のコードから汎用コードを分離するということ
11章 一度に1つのことを
- コードは1つずつタスクを行うようにしなければいけない。
本書の手順
- コードが行っている「タスク」をすべて列挙する。この「タスク」という言葉はユルく使っている。「オブジェクトが妥当かどうかを確認する」のように小さなこともあれば「ツリーのすべれのノードをイテレートする」のようにあいまいなこともある
- タスクをできるだけ異なる関数に分離する。少なくとも異なる領域に分割する。
12章 コードに思いを込める
コードをより明確にする簡単な手順を使う
- コードの動作を簡単な言葉で同僚にもわかるように説明する
- その説明のなかでs使っているキーワードやフレーズに注目する
- その説明に合わせてコードを書く
声に出すラバーダッキングは有効である。
13章 短いコードを書く
最も読みやすいコードは何も書かれていないコードだ
汎用的な「ユーティリティ」コードを作って、重複コードを削除する。
- 未使用のコードや無用の機能を削除する
- プロジェクトをサブプロジェクトに分割する
- コードの「重量」を意識する。軽量で機敏にしておく
- 不必要な機能をプロダクトから削除する。過剰な機能は持たせない。
- 最も簡単に問題を解決できるような要求を考える。
- 定期的にすべてのAPIを読んで、標準ライブラリに慣れ親しんでおく。
新しいものはなるべく書かない
第四部 選抜テーマ
14章 テストと読みやすさ
- 他のプログラマが安心してテストの追加や変更ができるように、テストコードを読みやすくする。
- コードを完全にテストする最も単純な入力値の組み合わせを選択しなければいけない。
- テストには最もキレイで単純な値を選ぶ。
15章 「分/時間カウンタ」を設計・実装する
割愛。