もし、あなたがプログラマで、その理由が分からないとしたら、一度よく考えてみてほしい。「とりあえず、グローバル変数を使わなければいいのだろう」などと安易に構えていては、どこかで過ちを起こすかもしれない。
例えば、Java には「グローバル変数」というものはないが、安心はできない。
クラスのメンバ変数(フィールド)においても、private にすべきものを public や protected にすれば、同じ「理由」によって嫌われることだろう。むしろ、オブジェクト指向の基本である「カプセル化」の意味が分かっていないという点で、グローバル変数の乱用よりもタチが悪いといってもいい。
また、ローカル変数(関数内の変数)で事足りるものをメンバ変数にしたり、メンバ関数(メソッド)の引数や戻り値にすべきものをメンバ変数にするのも、同じことである。
つまり、「グローバル変数」自体ではなく、「変数の使い方」が問題なのだ。たとえ、言語仕様からグローバル変数というものが排除されたとしても、同じような乱用はどこかに残り続けるだろう。
グローバル変数が嫌われる「理由」を理解せよ、という所以である。
ここでの「乱用」とは、変数にアクセス(参照や更新)ができる範囲(スコープ)を必要以上に広げてしまうことである。
スコープが広い変数、つまり、どこからでもアクセスできる変数というのは、ソースコードの書き手にとっては便利なものかもしれない。しかし、読み手にとっては、非常に厄介なものだ。その変数がどこで何に使われているのか、広範囲にチェックしなくてはならなくなるからだ。
結果的に、そのようなコードの作者は、「自分が楽に書ければそれでよい」というような自分勝手な人間と評価されるかもしれない。そうでないとしても、変数のスコープの設定(設計)をしない怠惰な者とされるだろう。
※参考(e-Words)
・グローバル変数
・ローカル変数
・クラス
・カプセル化
■関連記事
・誰のためのコード?
・まずは丁寧なプログラミングを
職業プログラマー入門
―システム開発者を目指すあなたへ設計からC言語コーディング、テストまで
―システム開発者を目指すあなたへ設計からC言語コーディング、テストまで
posted with amazlet
on 06.05.06
遠矢 行史 矢沢 路朗 川人 弘毅 鶴巻 浩史 レッドフォックス
エーアイ出版 (2003/03)
売り上げランキング: 125,680
エーアイ出版 (2003/03)
売り上げランキング: 125,680
おすすめ度の平均: 




やさしいJava 第3版
posted with amazlet
on 06.05.06
高橋 麻奈
ソフトバンククリエイティブ (2005/09/01)
売り上げランキング: 10,005
ソフトバンククリエイティブ (2005/09/01)
売り上げランキング: 10,005
おすすめ度の平均: 


