問題タブ [namespace-organisation]
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.
php - ほぼ同一のファイルを別の名前空間に含める方法 (デバッグ目的)
次の PHP コードの問題に直面しています。
現時点では、私の PHP コードは名前空間を使用していません。インクルード ファイルに変更を加えたfoobarinc.php
ので、foobarinc-v1.php
(古いバージョン) とfoobarinc-v2.php
(新しいバージョン) の 2 つのバージョンができました。foo()
インクルード ファイルには、両方のファイルに存在するいくつかの関数 (たとえば) があります。現時点でfoobarinc-v2.php
はいくつかのバグがあるため、foo()
fromを使用してコードをデバッグする必要がありますfooinc-v1.php
(少なくとも動作することがわかっているため) が、他の場所でfoo()
fromを呼び出す必要もあります。foobarinc-v2.php
`foobarinc-v1.php ファイルはそのまま必要になるため、何も変更したくありませんが、必要に応じて名前空間をファイルに追加したいと考えています。目的を達成するために PHP 名前空間を使用できますか?
たとえば、私はやりたい:
main.php:
上記のコードを修正して目的を達成するにはどうすればよいですか?
c# - デリゲートを .Net ソリューションに配置する場所
私は、概念実証として始まったソリューションの C# .Net コレクションを持っており、ほぼ 15 の異なるプロジェクトに成長しました。私は現在、製品ファミリ全体を書き直している最中であり、将来を見据えた組織で、自分の能力を最大限に発揮してベスト プラクティスを維持しようとしています。
私はいくつかの調査を行いましたが、将来リファクタリングが必要になる可能性を最小限に抑えるために、マルチプロジェクト製品でデリゲートを保持するのに最適な場所についてはまだ不明です.
一般的なコンセンサスは、ユースケースにとって意味のある場所に配置することだと思いますが、一般的に、問題を最小限に抑え、積極的なモジュール性を促進し、メンテナンスを容易にするために、ソリューション内のすべてを構造化する最善の方法があると思います。
多くの場合、使用されている場所で旅行することをお勧めします。おそらく、クラス ファイルの上の名前空間で宣言されています。私の場合、これは、イベントを強制する共通インターフェイスを備えた共通ライブラリに変換されます。現在、「デリゲート」名前空間の独自のファイルにデリゲートがあります。そうすることで見落としがありますか、それともデリゲートのユースケースを過度に複雑にしていますか?それとも、これは現在の使用の期待に沿っていますか?
私は典型的な検索を行いましたが、信頼できるものや実質的なものは何も見つかりませんでした。ただし、これは不適切なキーワード選択の結果である可能性があります。
php - PHP で名前空間に準拠した PSR-4 を使用してクラスが見つからない
PHP (>5.4.*) と composer の名前空間について非常に混乱しています。
シナリオ
コード CpPanelBackTest.php
ファイル test.php
vendor/abkrim/cputils の composer.json ファイル
エラーを取得 ->
CpPanelBackTest.php のコードを変更した場合
そしてファイルtest.php
今はうまくいきます。
道に迷いました。私はそれについて何も理解していません echo 'Date today is: ' . CpPanelBackTest::getDate();
c# - プロジェクト コードの分離とフォルダーの命名規則
私たちのプロジェクトには、何かを実行する C# クラス (エンジン コード) と、エンジンの機能をパラメーター化するためのデータ転送 (DTO) クラスがいくつかあります。プロジェクト メンバーの 1 人は、クラスをフォルダーに分けるのが好きです。
他のプロジェクト メンバーは、このフォルダーの分離に悩まされています。彼は、これらのコードが問題の一部であるため、同じフォルダーに配置することを好みます。
最初の方法は、価値のあるクラスを「価値のない」クラスから分離し、ソリューション エクスプローラーでの検索を高速化しますが、DTO 名は適切なものではありません。(より大きな)プロジェクトで、コードをフォルダーに分割する方法(およびそれらに名前を付ける方法)に興味がありますか?
c++ - 型 T の構造的スコープとは?
私はウィキペディアでそれについて見つけました:
T の構造的スコープ (フレンド関数を見つけるために使用できます)
誰かがそれが何であるか説明してもらえますか? Google はあまり役に立ちませんでした。
javascript - IIFE は名前空間をどのように保護しますか?
IIFEに関する記事を読んでいますが、それがもたらす主な価値は、以下のコードで "i" を IIFE に配置すると変更できないという意味で、変数のプライバシーを作成することだと思います。しかし、名前空間はどうですか?「カウンター」のスコープに変数が含まれている場合、2つにどのような違いがありますか?
python-2.7 - [import numpy as np] が実行されている間に、py2.7 で何ヶ月も実行されたコードの "Lost Paradise" が、名前空間で np.ndarray() が見つからないのはなぜですか?
2.7.9 と 2.7.11 の間でネームスペース処理の変更はありましたか?
TL;DR: Stack Overflow で 450 件以上の回答を提供した後。私はスタック オーバーフローのルールを知っており、問題の絞り込み/分離に努めましたが、以下のすべての理由により、公正な MCVE を投稿することは事実上不可能です。
以下に投稿された生体内診断が証明されました. np.ndarray 呼び出しに名前空間の問題はありません.最初の行が numpy ( np ) シンボルにアクセス/使用しようとするまで、行 14644 (元の番号付けでは 14630 )
それまでの動作する numpy 呼び出しが突然例外を発生させる場所:
UnboundLocalError: 割り当て前に参照されたローカル変数 'np'
はじめに:
定量的モデリングの目的で、かなり広範なpython
モジュール コードが、技術的な分析と予測のために運用される分散処理フレームワークで再利用されています。量子モデル (予測に使用されている) は数十 CPU コア時間という驚くべきコストで生成されるという事実により、ステートフル モジュールreload( QuantFX )
-s を可能にするいくつかの追加手段が導入され、これらが保護されるようになりました。量子モデルのすでに精巧なインスタンスですが、モジュール機能をオンザフライで更新、微調整、再テストすることができます。
事実:
import QuantFX
動作を停止しnumpy
、変更されていない呼び出しで例外をスローします:
- モジュール コードは、[QUANT-TOOLS]、[MODEL] セクションだけを更新して、過去 12 か月間使用されました
- コードはマルチパーティ分散処理の Python 2.7 の一部であるため、MCVE を試みてもエコシステムの動作が反映または複製されることはありません。
問題が発生したとき:ホスト用
の最近の Anaconda ( miniconda
4.0.0 / 4.0.5 ) パッケージ マネージャーをロードした後、2.7.11 と呼ばれるモジュールにも再配置され、この更新が他の Anaconda で問題なく実行されるまでの間Python での 2.2.0 (32 ビット) のインストールが動作を停止し、奇妙な外観の例外が発生するVM02/wXP
python
QuantFX.py
2.7.9
機能不全の運用状態を示すもの:週ごとに数十か月間、
非常にうまくいっています。now をimport QuantFX
呼び出すと、例外が発生し、あたかもがまったく編集されていないかのように(221 行を参照) 、何らかのローカル変数であると見なされます。QuantFX.aMiniRESPONDER()
Traceback
numpy
import
numpy
(インタプリタ コマンド ライン プロンプトでまったく同じ関数を手動で呼び出す間、モジュールによって -ed されたもの (以下の 221 行目)はうまく
いきましたnamespace
numpy
import
)。
行 14630 のコンテキストTraceback
と詳細:
221 行目import numpy as np
+ State-Full リロードの概念:
QuantFX
モジュールのコーディングは PEP* などに関して異議を唱える可能性がありますが、シンタックス コンストラクターは、/ を介したコンテキスト フル モードの操作と、最小限の RAM/CPU での高速で安全なコンテキストのない軽量操作の両方を可能にするように決定されましimport
たreload()
。診断または制御 CLI の目的で 1 つのコンポーネント コードのみを選択/コピー/貼り付け (aRemoteKEYBOARD()
または など) してリモート ターミナルを消費しますが、モジュール全体aMiniRESPONDER()
は必要ありません (上記を含む後期インポートのプロビジョニング(行 14426 )そのような-文脈のない手口のために)。import
QuantFX
numpy
QuantFX
求めるもの:
2.7.9 と 2.7.11 の間の変更に関する説明は、観測されたnp.ndarray()
衝突に関連している可能性があり、先週の金曜日に導入されました。
代替モジュール構文コンストラクターのレイアウトの推奨事項も、そのような提案がステートフルネスの両方を維持しreload( QuantFX )
、コンテキストフルとコンテキストレスの両方のコードベースコンポーネントの使用を許可する場合、高い価値があります。
アップデート:
可能性のある外観とは対照的に、この投稿の前に、問題の分離を可能にするために生体内自己診断を追加するための適切なレビューとデバッグ作業が行われました。
インビボ numpy-nd.array-symbol-checker
@viraptorからの生体内チェッカーのアイデア提案付き
起動時に詳細な行ごとの確認が提供され、クラッシュするまでLine 14644
aDSegFLOAT = np.ndarray( ... )
np.ndarray シンボルマスキングはありませんでした: