川のブログ

川の適当気ままなブログです。 

リーダブルコードを読む part9

こんにちはかわです。

アドベントカレンダー24記事目です。

以下の続きです。

kawakawa.hatenablog.com

9章 変数と読みやすさ

  1. 変数が多いと変数を追跡するのが難しくなる。
  2. 変数のスコープが大きいとスコープを把握する時間が長くなる。
  3. 変数が頻繁に変更されると現在の値を把握するのが難しくなる。

1 変数を削除する

役に立たない一時変数

以下を満たしている確認する + 複雑な文を分割している + 明確になっている + 複数回使われている

中間結果を削除する

中間結果を保持するより、タスクを早く完了できないかを検討すべき。

制御フロー変数を削除する

doneのようなループのいろんなところにtrueがある変数

これは削除できる

また、 複雑なループ(ネストが何段もあるループ)はコードを

新しい関数に移すなどすべし。

2 変数のスコープを縮める

変数のことが見えるコード行数をできるだけ減らす。

→一度に考えなければいけない変数を減らせるから。

メンバ変数

メンバ変数はクラスの中で「ミニグローバル」になっていると言える。

「ミニグローバル」はできるだけ減らすべき。

staticにしたり、ローカル変数に格下げたりする。

大きなクラスを小さなクラスに分割するのも良い。

c++ のif文のスコープ

if文の条件式のためだけに使われている変数は

条件式の中で定義すればいい

JavaScriptで「プライベート」変数を作る

変数をクロージャで包むのもいい。

JavaScriptのグローバルスコープ

Javascriptはvarをつけないとグローバルスコープになってしまう

気をつける

PythonJavaScriptのネストしないスコープ

C++Javaのような言語にはブロックスコープがある。

しかしPythonJavaScriptは関数全体にこぼれ出る。

定義位置を下げる

使う直前に変数宣言をする。

3 変数は一度だけ書き込む

変数を操作する場所が増えると、現在値の判断が難しくなる

以上