問題タブ [global-namespace]
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.
c++ - 初心者にグローバル名前空間の使い方を教えるべきですか?
注: 私自身はほぼ初心者です。この質問は、私が経験した唯一の言語であるため、C++ の使用法に集中しています。
using namespace std;
C++ 用に提供されたコード例で使用する Stack Overflow については、コンセンサスがあるようです。私はもともとこの方法でそれを学びましたが、後でなぜこれが問題になるのか教えられませんでした.
サンプルコードで接頭辞 std:: を使用することに問題があるのはなぜだろうと思っていました。特に質問者の多くがコードを例から IDE にコピーして貼り付けているため、グローバル名前空間を宣言するのは気まぐれに思えます。名前空間は高度なプログラミングの概念ですが、 std:: の前に付けて、初心者が質問した場合に後で説明するのが最善だと思います。
初心者にこの使い方を教えてもよいのはなぜですか?
javascript - グローバル名前空間を乱雑にすることなく、他のサイトにJavascript(Prototype.jsを含む)を挿入するにはどうすればよいですか?
私は現在、Prototypeライブラリを使用する大きなサイトであるプロジェクトに取り組んでおり、すでに膨大な量のJavascriptコードがあります。
現在、他の人のサイトに「注入」されるコード(サイトに<script>タグを追加する人を想像してください)に取り組んでいます。このコードは、コードを実行し、一連のDOM要素と機能を自分のサイトに追加します。サイト。これには新しいコードが含まれ、メインサイトで使用する多くのコードも再利用されます。
私が抱えている問題は、もちろん、人々のページにプロトタイプを含める<script>を追加するだけではクールではないということです。すでに任意のフレームワークを使用しているページでそれを行うと、すべてを台無しにすることが保証されます。
jQueryには、$オブジェクトの「名前を変更」するオプションがあります。これにより、jQueryを使用していないという事実を除いて、この状況を適切に処理できるため、すべてを移行する必要があります。
今、私はいくつかの醜い選択を考えています、そして私は何が最善かわかりません...
- どこでも名前が変更された$オブジェクトを使用して、jQueryを使用するようにすべてを書き直します。
- 「注入された」コードで使用するサブセットのみを使用して「新しい」プロトタイプライブラリを作成し、$の名前を別の名前に変更します。次に、何らかの方法で共有されるコードの部分を適応させる必要があります。
- 挿入されたコードでライブラリをまったく使用せず、可能な限りクリーンに保ち、ライブラリをまったく使用しないように共有コードを書き直します。これは明らかに私たちに退化して、ライブラリの独自のフランケンシュタインを作成します。これはおそらくこれまでで最悪のシナリオです。
私はあなたたちが私に何ができると思うか、そしてまた私のすべての問題を解決する魔法のオプションがあるかどうか疑問に思っています...
たとえば、Caja / Cajitaのようなものを使用して、自分のコードをサンドボックス化し、サイトの他の部分から分離して、その中にPrototypeを含めることができると思いますか?それとも私はそれで完全にポイントを逃していますか?
ブックマークレットのテクニックについても一度読んだことがありますが、次のようにコードを追加しましたか?
そして、コードはすべて無名関数内にあり、グローバル名前空間にはまったく触れていません。以下を含む1つのファイルを作成できると思いますか。
それはうまくいくでしょうか?たとえば、グローバル名前空間を乱雑にせず、jQueryを使用するサイトの機能を強制終了しないという目的を達成できるでしょうか。
それとも、プロトタイプが複雑すぎて、そのように分離できないのでしょうか。
(注:それはどこでもクロージャーを作成し、それは遅くなることを私は知っていると思いますが、私はパフォーマンスについてあまり気にしません、私のコードはそれほど複雑なことをしていません)
c# - 何もコーディングされていない場合に、プロジェクト ファイル全体で C# ルート名前空間を強制する方法は?
内容が明示的にラップされていない .cs ソース ファイルの内容に、ルート名前空間を強制したいと考えていますnamespace
。つまり、クラスやその他の名前空間レベルの構造をデフォルトの名前空間から除外したいと考えています。
(Visual Studio を使用した Windows .NET 環境内での作業)
次の例では、明示的な名前空間がコーディングされていなくても、デフォルトでCar
クラスを強制的に名前空間に入れたいと考えています。MotorIndustry
Vehicle.cs (名前空間あり)
Car.cs (名前空間なし/デフォルト)
Visual Studio のプロジェクト設定、AssemblyInfo.cs ファイル、またはその他の手段を使用して、この「ルート名前空間」の変更動作を実現する方法はありますか?
私の理解では、VB.NET にはこのような機能がありますが、C# の動作は異なりますか?
なぜ私がこれを尋ねているのかについてのいくつかの文脈: 私には何百ものクラスがあり、プログラマーはいくつかの名前空間をラップするのを忘れていました. 他のプロジェクトからアセンブリを参照すると、デフォルトの名前空間がクラスで汚染され、あいまいな状況が発生します。
c++ - Doxygen / C ++:名前空間リストのグローバル名前空間
Doxygenで生成されたドキュメントの名前空間リストにグローバル名前空間を表示できますか?私はいくつかの関数を持っていますextern "C"
、それらはそれらを宣言するヘッダーファイルのドキュメントに現れますが、名前空間リストにはありません、そしてそれはそれらが実際にはそこにないという印象を与えます...
c++ - 前置された二重コロン「::」の意味は何ですか?
変更する必要があるクラスで、次のコード行を見つけました。
クラス名の前に付けられた二重コロンが正確に何を意味するのかわかりません。tmpCo
クラスのオブジェクトへのポインターとしての宣言Configuration
...しかし、前に付けられた二重コロンは私を混乱させます。
私も見つけました:
php - グローバルを使用せずにPHPのインクルードファイルに値を渡すことはできますか?
PHP でよく使用するパターンは、いくつかのグローバル ( 、 、 など) を設定し、$page
それら$user
の$db
グローバルを使用するファイルをインクルードすることです。ただし、これにグローバルを使用するという考えは好きではなかったので、より良い方法を探しています。
明らかな解決策は、サブファイルでクラスまたは関数を定義し、ファイルがインクルードされた後に呼び出すことです。ただし、次のように機能しない場合があります。
それぞれを関数にラップrouting.php
して、それぞれを引数として呼び出そう$router
とすると、同じ関数名が複数のファイルで定義された後に衝突します。
私はアイデアがありません。グローバル名前空間を汚染することなく、インクルードされたファイルに変数を渡すより良い方法はありますか?
c++ - C ++で「名前空間の使用」をヘッダーファイルに含めるのはなぜ悪い考えですか?
BruceEckelの「ThinkinginC++」から名前空間について読んでいるときに、次のステートメントに遭遇しました。
ただし、ヘッダーファイルにusingディレクティブが表示されることはほとんどありません(少なくともスコープ外ではありません)。その理由は、ディレクティブを使用すると、その特定の名前空間の保護がなくなり、その効果は現在のコンパイル単位が終了するまで続くためです。usingディレクティブ(スコープ外)をヘッダーファイルに入れると、この「名前空間保護」の喪失が、このヘッダーを含むすべてのファイル内で発生することを意味します。これは、多くの場合、他のヘッダーファイルを意味します。
上記の説明を簡単な例で理解するのを手伝っていただけませんか。
c++ - 「ノード」はグローバル名前空間のメンバーではありませんか?
コードの何が問題なのかわかりませんが、Visual Studio でこれらのエラー メッセージが引き続き表示されます。
これがヘッダー ファイルです。
ここに cpp ファイルがあります。
ありがとう...
winforms - Winform アプリケーションの条件付き名前空間
プロジェクトで名前空間を定義するより良い方法を知りたいです。2 つの異なる winform プロジェクトがあり、両方のプロジェクトで使用する特定のコード ファイルとフォームがあります。したがって、プロジェクト 1 と 2 の構造は以下のとおりです。
したがって、ここでは、クラス C1 (名前空間 common_fun の下) は、両方のプロジェクトで使用される共有ファイルです。ただし、クラス C2 のメソッド M2 を呼び出す必要があり、そのメソッドを呼び出すには、条件付きの using ステートメントを一番上に記述する必要があります。すなわち
だから私の質問は、共通ファイルの名前空間を含めるためのより良い方法はありますか? 将来的には、同じクラス/フォームを使用する 3 ~ 4 個のプロジェクトが存在する可能性があります。
ありがとう。
javascript - javascriptグローバル名前空間は完全なポストバックごとにクリアされますか?
グローバル変数と関数でグローバル名前空間を乱雑にすることの危険性について読み続けています。
グローバル関数を定義する「古い」方法は、特に複数の開発者が同じプロジェクトで作業している状況では問題があることを読みました。
私は理解していて、できる限り最高のコードを書きたいと思っていますが、上記のステートメントは私を混乱させます。
開発者がプロジェクトの同じページで作業することはめったにありません。ユーザーがプロジェクトのページを変更すると、グローバル名前空間がクリアされると思います。
そうではありませんか?