遅い→起動時

http://d.hatena.ne.jp/pmint/

グローバル変数

d:id:pmint:20080227:p1の続き。


変数に限らず、シンボルのスコープは適切じゃないと。
広すぎても狭すぎてもいけない。
アプリの環境設定値をローカル変数でたらい回しされても困るし、直接呼び出せない手続き間のデータ交換のためにグローバル変数を使われても困る。




そもそもグローバル変数がいけないのは代入・更新がいたるところでされるから。
「使用できる範囲が広いから」ではない。
だって、ローカル変数でも「一時変数は悪」でしょ。
適用範囲が狭くても、一意ではない変数は可読性を下げる。
つまり、1つの変数を複数の型*1として使うことと、代入を繰り返すことが悪だということ。


代入を繰り返せないシンボル…定数が悪じゃないのはどうしてかを考えれば、「グローバル変数だから悪」というのは根拠のないでっち上げだと分かるはず。

*1:システムが関与する型じゃなく、アプリケーションハンガリアンで表すような型