問題タブ [global-variables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
417 参照

c# - グローバルを廃止しますか?

深さが 20 代のツリー オブジェクトのセットがあります。このツリーの各ノードは、そのツリーのルートにアクセスする必要があります。

いくつかの解決策:

  1. 各ノードはルートへの参照を直接格納できます (メモリを浪費します)
    • 「上に行く」ことで実行時にルートを計算できます(サイクルを無駄にします)
    • 静的フィールドを使用できます (ただし、これはグローバルになります)

(任意のバリエーションで) グローバルを使用しないが、メモリまたはサイクルの両方でそれぞれ #1 または #2 よりも効率的な設計を誰かが提供できますか?

編集:私はツリーのセットを持っているので、ツリーを区別するのが難しいため、単純に静的に格納することはできません。(ありがとうマカルト)

0 投票する
7 に答える
974 参照

memory - より悪い罪: 副作用または巨大なオブジェクトの通過?

関数内のループ内に関数があります。内部関数は、データの大きなベクトルを取得してメモリに保存します(グローバル変数として...「S-Plus」のような「R」を使用しています)。ループは、取得するデータの長いリストをループします。外側の関数がプロセスを開始し、取得するデータセットのリストを渡します。

次のデータセットに移動する前に各データセットを格納するように内部関数をプログラムしたため、外部関数のすべての作業はグローバル変数の副作用として発生します...大きな問題はありません。これは、メモリを大量に消費するベクトルのベクトルを収集して返すよりも良いですか、悪いですか? 優れた第 3 のアプローチはありますか?

データ ベクトルをメモリではなくデータベースに格納すると、答えは変わりますか? 理想的には、終了前に処理されたすべての情報を失うことなく、関数を終了できるようにする (またはネットワーク タイムアウトのために失敗する) ようにしたいと考えています。

0 投票する
6 に答える
1194 参照

c - グローバルからローカルへのリファクタリング。それらは静的である必要がありますか?

マルチタスク(RTOS)環境で動作するように「スパゲッティコード」Cモジュールをリファクタリングしています。

現在、非常に長い関数と多くの不要なグローバル変数があります。

1つの関数にのみ存在するグローバル変数をローカル変数に置き換えようとすると、ジレンマに陥ります。すべてのグローバル変数は、ローカルの「静的」のように動作します。たとえば、関数を終了して再入力しても、その値を保持します。

マルチタスクの場合、「静的」ローカル変数はグローバルから最悪です。それらは機能を再入力しないようにします。

すべての論理フローをトレースせずに、関数が可変値の再エントランスを保持するリレーであるかどうかを調べる方法はありますか?

0 投票する
5 に答える
41910 参照

php - データのソースとしてグローバル変数を使用したPHPセッションの副作用の警告

提供されたPHPWebサイトをホストしようとしています。この警告が表示されます:

警告:不明:スクリプトは、PHP4.2.3まで存在していたセッションの副作用に依存している可能性があります。register_globalsが有効になっていない限り、セッション拡張機能はグローバル変数をデータのソースとは見なさないことに注意してください。この機能とこの警告を無効にするには、session.bug_compat_42またはsession.bug_compat_warnをそれぞれオフに設定します。0行目の不明

これは何を意味するのでしょうか?コード内でこの問題の原因を突き止めるにはどうすればよいですか?

0 投票する
16 に答える
48670 参照

c - Cでグローバル変数を使用してもよいのはいつですか?

どうやら、「絶対にカプセル化しないで!(単なるマクロでも!)」から「大したことないから便利な時に使ってね」など、さまざまな意見があるようです。

そう。

具体的な理由(できれば例を挙げて)

  • グローバル変数が危険な理由
  • 代替変数の代わりにグローバル変数を使用する必要がある場合
  • グローバル変数を不適切に使用する誘惑に駆られている人のために、どのような代替手段がありますか

これは主観的なものですが、私は 1 つの回答を選び (私にとっては、すべての開発者がグローバルに対して持つべき愛憎関係を最もよく表しているものです)、コミュニティはその回答をすぐ下に投票します。

初心者がこの種の参照を持つことは重要だと思いますが、あなたのものと実質的に同様の別の回答が存在する場合は、それを混乱させないでください-コメントを追加するか、他の人の回答を編集してください.

-アダム

0 投票する
3 に答える
384 参照

global-variables - UI 駆動型アプリケーションでプログラム スコープ変数をどこに配置しますか?

わかりましたので、グローバル変数が悪いと見なされ、シングルトン パターンが乱用されていることはわかっています。また、クラスは 1 つのタスクだけを実行し、その 1 つのタスクを実行できるようにする変数のみを含める必要があることを多くの場所で読みました。しかし、最近のプロジェクトに取り組んでいる間、実際にコードを書く前にこれらのルールについて考え、プログラムの最初の段階でルールを破る傾向があることに気付きました。

私は現在、MFC ダイアログ ベースのアプリケーションに取り組んでいますが、この質問は UI 駆動型のアプリケーションに適用できます。ステート マシン、ファイルの読み取り/書き込み、およびハードウェア インターフェイスを処理する個別のクラスがあります。これらのオブジェクトはすべて、何らかのタイプの UI コントロールまたはプロパティの表示/編集が必要になります。MFC ダイアログ アプリケーションでは、ダイアログはプログラムなので、プログラムが閉じられるまで存在している必要があります。私は通常、オブジェクトをアプリケーションのメイン ダイアログ クラスに配置し、ダイアログ クラスに 2 つの役割を持たせました。アプリケーション内の他のすべてのオブジェクトのメイン UI とホームの両方として。他のアプリケーションでは、これらのオブジェクトをグローバルに作成し、必要な場所から参照しました。これらの方法はどちらも正しくないようです。最初のオプションは、1 つのクラス、1 つのタスク ルール、2 つ目はグローバルに依存し、隠れた依存関係も作成します。ある種の依存性注入を導入することはできますが、注入するこれらすべての変数はどこに存在するのでしょうか?

ルールを破ることなくプログラムを整理するために、他の人は何をしているのでしょうか?

0 投票する
4 に答える
3926 参照

php - PHPは自動的に変数を「GET」します

私は自分の会社の新しい Web サイトを設計しており、過去にすべてのサイトで使用していたスイッチ ナビゲーションを実装しようとしています。

なんらかの理由で index.php?x=products に移動しても何も起こらず、まだ inc/main.php が表示されます。つまり、URL から X 変数が検出されていません。これはグローバル変数と関係がありますか?

0 投票する
10 に答える
4742 参照

c - グローバル構造から読み取るときにセマフォは必要ですか?

かなり基本的な質問ですが、どこにも尋ねられていません。

次のようなグローバル構造体 (C) があるとします。

written_frequentlyこの構造体への割り当てがアトミックであることを 100% 確信できないため、読み取りと書き込みを行うスレッドが多数ある場合は、メンバーにセマフォ (またはその他のロック) が必要であることは明らかです。.

多くのスレッドにread_onlyメンバーを読み取らせ、書き込みを行わせない場合、読み取り専用の構造体アクセスにセマフォが必要ですか?

(直前と直後の場所が常に変更されているという事実がread_onlyメンバーに影響を与えるべきではなく、値を読み取る複数のスレッドが互いに干渉するべきではないため、私はノーと言う傾向があります。しかし、よくわかりません. )


[編集: 私が何を意味しているのかを非常に具体的に明確にするために、この質問をもっとうまく行うべきだったことに今気づきました。当然のことながら、最初に質問したとき、関連する問題のすべてを理解できたわけではありません。もちろん、今質問を包括的に編集すると、これらの優れた回答がすべて台無しになります。私が意味したのは、次のようなものです。

私が尋ねた主な問題は、このデータは構造体の一部であるため、他の構造体メンバーの影響を受けているのでしょうか。

メンバーが int であり、したがって書き込みがアトミックである可能性が高いという事実は、この場合、実際には単なるニシンです。]

0 投票する
4 に答える
1419 参照

c# - 静的ユーザーデータをC#Windowsアプリケーションに保存する

アプリの起動時にユーザーのアクセス許可/役割を取得するためにActiveDirectoryにアクセスし、全体を通して存続する必要があるアプリケーションがあります。

すべてのフォームでADを押してユーザーの権限を再確認したくないので、ユーザーの役割と、ログインしているユーザーの他のデータをアプリケーション内の任意のフォームでグローバルに利用できるようにして、適切に使用できるようにします。必要に応じて、機能やボタンなどを非表示にします。

何かのようなもの:

Windowsアプリに静的ユーザーデータを保存するためのベストプラクティスは何ですか?シングルトンやグローバル変数などのソリューションは機能する可能性がありますが、私はこれらを回避しようとしていました。

各フォームのコンストラクターに渡されるUserオブジェクトも同様に悪いですか?

0 投票する
4 に答える
1287 参照

php - PHPテンプレート

PHPで単純なテンプレートレイヤーを書いていますが、少し行き詰まっています。現時点での仕組みは次のとおりです。

まずfetch_template、データベースからテンプレートの内容をロードするために使用します-これは機能します(興味があれば、起動時にすべてのテンプレートを収集します)。

テンプレートコードとロジックでPHP変数を使用しています-例:

次に、output_template(以下)を使用して、テンプレート内の変数を解析し、それらを置き換えます。以前は、栄光のstr_replaceテンプレートクラスでテンプレートタグを使用していましたが、非効率的でした。

私の問題は、まだ推測していない場合、変数が関数内で宣言されていないことです-したがって、$templateグローバルスコープに配置しない限り、関数は変数を解析できません-これを実行したいかどうかはわかりません。それまたは関数のパラメーターとして変数の配列を持っている(これはさらに退屈に聞こえますが、可能です)。

関数を使用するのではなく、関数のコード(ワンライナーのみ)をコードで使用する以外の解決策はありますか?

ありがとう、ロス

追伸私はSmartyとそこにある幅広いテンプレートエンジンについて知っています-私はそれらを使用するつもりはないので、それらを提案しないでください。ありがとう!