変数を削除する
役に立たない一時変数
- 複雑な式を分割していない
- より明確になっていない
- 重複コードの削除になっていない
中間結果を削除する
配列から値を削除するJavaScript関数の例:
var remove_one = function(array, value_to_remove) {
var index_to_remove = null;
for (var i = 0; i < array.length; i += 1) {
if (array[i] === value_to_remove) {
index_to_remove = i;
break;
}
}
if (index_to_remove !== null) {
array.splice(index_to_remove, 1);
}
};
index_to_removeという変数は中間結果を保持するためにだけ使っている。index_to_removeを削除すると、以下のようにすっきりさせることができる。
var remove_one = function(array, value_to_remove) {
for (var i = 0; i < array.length; i += 1) {
if (array[i] === value_to_remove) {
array.splice(i, 1);
return;
}
}
};
制御フロー変数を削除する
以下の例のdoneのような変数は、プログラムの実行を制御するためだけの変数(制御フロー変数)であり、実際のプログラムに関係のあるデータは含まれていない。うまくプログラムすれば、制御フロー変数は削除することができる。
boolean done = false;
while (/* 条件 */ && !done) {
...
if (...) {
done = true;
continue;
}
}
変数のスコープを縮める
鍵となる考え:変数のことが見えるコード行数をできるだけ減らす。
スコープを縮めるための具体的な実装は、言語により異なる。JavaSctiptなら『JavaScript: The Good Parts』や『JavaScriptパターン』が参考になる。PHPでWebアプリを作るなら、MVCフレームワークを使い、ファットコントローラーを避け、メソッドを細かく分割するようにすれば個々の変数のスコープは小さくなる。
変数は一度だけ書き込む
鍵となる考え:変数を操作する場所が増えると、現在値の判断が難しくなる。
変数の値は一度設定したら書き換えないようにする。言語が定数やイミュータブルな値をサポートしている場合は、必要に応じてこれらを使用する。