問題タブ [magic-string]
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.
javascript - ASP.NET MVC を使用して JavaScript でハードコーディングされた文字列を削除する
私が取り組んでいるプロジェクトには、多くの JavaScript ファイルがあり、コントローラー アクションへの URL がハードコーディングされているため、いくつかの問題があります。
- ハードコーディングされた URL はタイプミスを起こしやすい
- 関連するコントローラーまたはアクションの名前が変更されると、JavaScript スクリプトで URL をハードコーディングすると、破損が発生します。
- ReSharper のようなツール (私の知る限り) は、それを指す URL がハードコードされている場合、アクションが使用されていないと言う方法を静的に分析できません。
質問
JavaScript でハードコーディングされた URL を使用しないようにするにはどうすればよいでしょうか? - この問題を解決できる既存のフレームワークはありますか?
あなたの洞察を聞くのを楽しみにしています。
ありがとう。
c# - 文字列名で初期化された列挙型を反復しますか?
最初に型を知らずに列挙型を反復処理することは可能ですか?
列挙型の型を表す文字列名をメソッドに渡すとします。
次に、その文字列名から列挙型を取得し、コレクションを反復処理して、列挙型に含まれる名前/値を抽出する必要があります。
php - PHP MAGIC CONSTANTS または $GLOBALS を渡す
これらの変数のいずれかを使用するにはどうすればよいですか? 多くのバージョンを試しましたが、エラーが発生し続けます
php - PHP で独自のマジック定数を定義していますか?
とにかくphpにはありますか?これにより、独自の魔法の定数を定義できます。その値はプログラム全体で変化する可能性があり、SUPER GLOBAL SCOPE
.
javascript - 外部JSファイル用のT4MVCのようなソリューションはありますか?
MVC プロジェクトで T4MVC を使用しています。私の質問は、外部 JS ファイルに対するそのような解決策はありますか? 多くの場合、外部 JS ファイルで (比較するために) URL または文字列を使用する必要があります。スティングブレイクアプリケーションの変更。または、T4MVC を同じように使用できることをアドバイスしてください。
あなたの時間、助け、共有に非常に感謝します。
c# - マジック ストリングの回避 反射 vs 定数
次の 2 つの例に基づいて、魔法を回避するためのより良いアプローチは何でしょうか?
意味されるクラスを知っている既知の関係
知らない関係
クラスがわからない(複数のクラスがこの名前のプロパティを持つ可能性があるため)またはプロパティがここに存在するかどうかさえわかりません
すべてのプロパティを const として含む定義クラスを作成できるので、プロパティの冗長性を回避できますが、この定義を維持することもできます。
私がリフレクションに行くとき、私はただMemberName.GetMemberName<Contact>( x=> x.Anniversary)
行い、変更は自動的に適用されますが、2番目のケースがあるときは、このプロパティがあると仮定します。コードがまだ有効であっても、プロパティ名が他のクラスで変更されている可能性があるため、ショーリフレクションを使用できません。また、リフレクションの追加によるオーバーヘッドもあります。
アップデート
質問はDevExpressと強く関連しています.DevExpressは至るところで「MagicStrings」を使用しており、ベースクラスを変更できないためです
c# - BaseControllerWithDataContext を最適化してマジック ストリングを回避する
次のコードで、いわゆるマジック ストリングの使用を避けるにはどうすればよいでしょうか。具体的には:System.Web.HttpContext.Current.Items["DomainDataContext"]
基本的に、このクラスはコントローラー内に DataContext を実装します。このクラスはクラス ライブラリの一部であり、DataContext クラス (つまり .dbml ファイル) に直接アクセスすることはできません。
私は別のジェネリック型パラメーターでそれをやろうとしましたが、"cannot use sealed class 'System.String' as type parameter constraint"
では、これを行う最善の方法は何でしょうか?
python - 基になる値をエンコードしていない場合、列挙型を使用するとどのような利点がありますか?
編集:この場合、Enumの利点に焦点を当てるために、この質問を元から大幅に編集しました(質問は主に意見に基づいているため保留されていました)
Enum
人間が読める文字列を基になる(数値などの)値に変換するときにを使用する意味を理解しています。この回答FederalHoliday
のクラスはその良い例です。
しかし、私が検討しているユースケースは、関数パラメーターが現在「魔法の文字列」として渡されている可能な値のセットに制限されている場合です。したがって、Enum
here を実装しても、コードの可読性は実際には向上しません (どちらかといえば、コードが煩雑になります)。そして、文字列を に変換するEnum
と、事実上同じ文字列 (つまり の名前Enum
) を比較するためだけに、やり過ぎのように感じます。
この回答には、列挙型の一般的な利点の素晴らしいリストがありますが、この場合にいくつ適用されるかはわかりません。
私が意味しているケースを明確にするために、ここにその例があり、 で指定された特定の大文字で文字列を出力する関数がありますmode
:
これを実際に確認するには、次を実行します。
与えます:
だから私の質問は:
Enum
文字列がその下に別の値を表していない場合、どのような利点がありますか? コードをより堅牢にする方法はありますか?
私が読んだ他のもの:
主Enum
に一般的な s について、特に文字列がその下の別の値を表す場合:
これには私のものと似た例があるようです (下Enums are interoperable )、私はそれに関する技術的な議論を理解するのに苦労しましEnum
た.
編集:この場合、文字列を対応する関数に直接マップすることは可能ですが、コードがより複雑であるため、実際の使用例ではこれは不可能です。(ただし、コメントで提案した人からの良いヒントです。)