コーディング の グローバル変数に関する解説。

株式会社 日立ソリューションズ

HITACHI Inspire the Next

  • ホーム
  • ソリューション・商品
  • 事例紹介
  • セミナー・展示会
  • ビジネスコラム
  • 企業情報
  • お問い合わせ

グローバル変数

グローバル変数とは

グローバル変数(大域変数、)は、コンピュータプログラミングにおいて全てのスコープからアクセスできる変数のことである。対する語は、ローカル変数である。スコープも参照。
グローバル変数は、通常その非局在性によりはっきりと悪しき慣習と考えられている。すなわち、グローバル変数は潜在的にどこかで変更される可能性があり、またプログラムの一部はそれに依存してしまう恐れがあるからである。グローバル変数はそれゆえ相互依存を生み出す無限の可能性を持っており、相互依存が高めることは複雑性を増大することにつながる。遠隔作用 () を参照。
しかしグローバル変数が適する状況もある。例えば、様々な関数を通して継続的によく使われる変数を引数として渡すことを避けるために使用できる。また、並列実行するスレッドやシグナルハンドラのように呼び出し側/被呼び出し側の関係を持たないコード同士でセクション間情報を受け渡すためにも広く使われる。
各々のファイルが暗黙の名前空間をもつ言語は、グローバルな名前空間を共用する言語に見られる問題の多くを、適切なカプセル化をすること無しに永遠に除去することができる。(ミューテックスのような)適切なロック無しに、グローバル変数を使用しているコードはスレッドセーフではない。
C++におけるグローバル変数の例:
#include
<iostream>

int global = 3; //これはグローバル変数。

void ChangeGlobal()
{
global = 5; //関数でグローバル変数を参照。
}

int main()
{
cout << global << endl; //もう一つの関数でグローバル変数を参照。
ChangeGlobal();
cout << global << endl;
return 0;
}


変数はグローバルに存在するものとして、main以外の全ての関数にそれを引数として渡す必要は無かった。グローバル変数はプログラム内で、全ての関数に属する:
3
5

グローバル変数を使用することで、ソフトウエアのソースコードを理解することが困難になる。グローバル変数の値はプログラムのどこからでも変更できるため、グローバル変数がどのように使用されているか理解するためには、プログラム全体を把握しなければならないからである。
DLLのような)多くのシステムは他のモジュールにあるグローバル変数の参照を直接サポートしないため、グローバル変数が多用されているコードを分割して再利用ライブラリにすることは非常に困難である。また、グローバル変数が他のローカルまたはオブジェクトスコープ変数として代用するには危険な名前を作るためにおこる名前問題を導いてしまうことがある。グローバル変数と同じ名前のローカル変数は、一般にそのローカル変数のスコープにおいてグローバル変数を隠匿する。そのため、さらにコードの理解を困難にする。グローバル変数への値の書き込みは理解と予測を難しくする副作用を生み出す。グローバルなどの利用はユニットテストを目的とするコード分割をより難しくする。それゆえ、それらは直接にコードの質の低下を助長する。

ページトップへ戻る


ソーシャルウェア

ソーシャルウェア

InWeaveは組織対応等の機能を強化した情報・知識共有基盤です。

Oracleデータベース

高い技術力と豊富なノウハウを持った技術者によるOracleデータベース設計/構築サービスをご提供。


ページトップへ戻る

話題の用語

クラウドコンピューティング

WWW用語辞典

クラウドコンピューティングとは、コンピュータサービスの利用者が ...

続きを読む 続きを読む

Active Directory

企業情報システム用語辞典

ActiveDirectory(アクティブディレクトリ)とは、Microsoft社が提供するディレクト...

続きを読む 続きを読む

ページトップへ戻る