C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C / C ++でグローバル変数を使用しないようにする必要があるのはなぜですか?


C ++だけでなく、どの言語でもグローバル変数を使用しないようにする必要があります。これは、これらの変数がグローバル名前空間を汚染し、任意のファイルからアクセスできるため、どこからでも変更できるため、大きなプロジェクトで非常に厄介なバグを引き起こす可能性があるためです。これらは、グローバル変数が悪いと見なされる理由のいくつかです-

  • グローバル変数はコードのどの部分でも変更される可能性があるため、考えられるすべての使用法を覚えたり推論したりするのは困難です。

  • グローバル変数はアクセス制御を持てません。プログラムの一部に限定することはできません。

  • グローバル変数を使用すると、コードが非常に緊密に結合されます。

  • グローバル変数を使用すると、名前空間が汚染されます。これにより、グローバル値が不必要に再割り当てされる可能性があります。

  • グローバル変数を使用したプログラムでのテストは、テスト時にそれらを分離することが難しいため、非常に困難な場合があります。

グローバル変数を使用する必要がある場合があることに注意してください。ただし、そうする前に、代替手段があるかどうかを確認してください。 c2 wikiでグローバル変数の詳細を読む-http://wiki.c2.com/?GlobalVariablesAreBad


  1. クライアントサーバーモデルを使用してC/C++で文字列を反転します

    ここでは、システムを作成する方法を説明します。ここでは、1つのクライアントとサーバーを作成し、クライアントは1つの文字列をサーバーに送信でき、サーバーは文字列を逆にしてクライアントに戻ります。 ここでは、ソケットプログラミングの概念を使用します。クライアントサーバー接続を確立するには、ポートを作成する必要があります。ポート番号は、ソケットで使用できる任意の1つの番号です。接続を確立するには、クライアントとサーバーに同じポートを使用する必要があります。 プログラムを起動するには、最初にサーバープログラムを起動します- gcc Server.c –o server 次に、クライア

  2. C#にグローバル変数がないのはなぜですか?

    C#にはグローバル変数がなく、C++でグローバル変数に使用されるスコープ解決演算子は名前空間に関連しています。これは、グローバル名前空間エイリアスと呼ばれます。 別の名前空間で識別子を共有するタイプがある場合は、スコープ解決演算子を使用してそれらを識別します。 たとえば、System.Consoleクラスを参照するには、スコープ解決演算子-を指定してグローバル名前空間エイリアスを使用します。 global::System.Console 例を見てみましょう- 例 using myAlias = System.Collections; namespace Program {