リーダブルコードを読む part9
こんにちはかわです。
アドベントカレンダー24記事目です。
以下の続きです。
9章 変数と読みやすさ
- 変数が多いと変数を追跡するのが難しくなる。
- 変数のスコープが大きいとスコープを把握する時間が長くなる。
- 変数が頻繁に変更されると現在の値を把握するのが難しくなる。
1 変数を削除する
役に立たない一時変数
以下を満たしている確認する + 複雑な文を分割している + 明確になっている + 複数回使われている
中間結果を削除する
中間結果を保持するより、タスクを早く完了できないかを検討すべき。
制御フロー変数を削除する
doneのようなループのいろんなところにtrueがある変数
これは削除できる
また、 複雑なループ(ネストが何段もあるループ)はコードを
新しい関数に移すなどすべし。
2 変数のスコープを縮める
変数のことが見えるコード行数をできるだけ減らす。
→一度に考えなければいけない変数を減らせるから。
メンバ変数
メンバ変数はクラスの中で「ミニグローバル」になっていると言える。
「ミニグローバル」はできるだけ減らすべき。
staticにしたり、ローカル変数に格下げたりする。
大きなクラスを小さなクラスに分割するのも良い。
c++ のif文のスコープ
if文の条件式のためだけに使われている変数は
条件式の中で定義すればいい
JavaScriptで「プライベート」変数を作る
変数をクロージャで包むのもいい。
JavaScriptのグローバルスコープ
Javascriptはvarをつけないとグローバルスコープになってしまう
気をつける
PythonとJavaScriptのネストしないスコープ
しかしPythonやJavaScriptは関数全体にこぼれ出る。
定義位置を下げる
使う直前に変数宣言をする。