2005年02月20日(日)

グローバル変数が嫌われる理由

テーマ:コーディング
「グローバル変数」は多くのプログラマに嫌われている。

もし、あなたがプログラマで、その理由が分からないとしたら、一度よく考えてみてほしい。「とりあえず、グローバル変数を使わなければいいのだろう」などと安易に構えていては、どこかで過ちを起こすかもしれない。


例えば、Java には「グローバル変数」というものはないが、安心はできない。

クラスのメンバ変数(フィールド)においても、private にすべきものを public や protected にすれば、同じ「理由」によって嫌われることだろう。むしろ、オブジェクト指向の基本である「カプセル化」の意味が分かっていないという点で、グローバル変数の乱用よりもタチが悪いといってもいい。

また、ローカル変数(関数内の変数)で事足りるものをメンバ変数にしたり、メンバ関数(メソッド)の引数や戻り値にすべきものをメンバ変数にするのも、同じことである。

つまり、「グローバル変数」自体ではなく、「変数の使い方」が問題なのだ。たとえ、言語仕様からグローバル変数というものが排除されたとしても、同じような乱用はどこかに残り続けるだろう。

グローバル変数が嫌われる「理由」を理解せよ、という所以である。


ここでの「乱用」とは、変数にアクセス(参照や更新)ができる範囲(スコープ)を必要以上に広げてしまうことである。

スコープが広い変数、つまり、どこからでもアクセスできる変数というのは、ソースコードの書き手にとっては便利なものかもしれない。しかし、読み手にとっては、非常に厄介なものだ。その変数がどこで何に使われているのか、広範囲にチェックしなくてはならなくなるからだ。

結果的に、そのようなコードの作者は、「自分が楽に書ければそれでよい」というような自分勝手な人間と評価されるかもしれない。そうでないとしても、変数のスコープの設定(設計)をしない怠惰な者とされるだろう。




※参考(e-Words)
グローバル変数
ローカル変数
クラス
カプセル化



■関連記事
誰のためのコード?
まずは丁寧なプログラミングを



職業プログラマー入門―システム開発者を目指すあなたへ設計からC言語コーディング、テストまで
遠矢 行史 矢沢 路朗 川人 弘毅 鶴巻 浩史 レッドフォックス
エーアイ出版 (2003/03)
売り上げランキング: 125,680
おすすめ度の平均: 4.2
4 紅狐魂!
5 わかりやすい
2 (null)


やさしいJava 第3版
やさしいJava 第3版
posted with amazlet on 06.05.06
高橋 麻奈
ソフトバンククリエイティブ (2005/09/01)
売り上げランキング: 10,005
おすすめ度の平均: 4
5 JAVA言語の文法を一から学んで行こうとする方にオススメ
3 入門用


AD
いいね!した人  |  コメント(2)  |  リブログ(0)

argvさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

コメント

[コメントをする]

2 ■RE: あとはあれですね

そうですね。一般的に、スコープが広いほどメモリ上に居座る時間が長くなるでしょうね。

1 ■あとはあれですね

メモリのこと考えると、やっぱなるべくスタックでもじもじしておくほうが省エネです。

コメント投稿

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。