問題タブ [hard-coding]
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.
language-agnostic - ハードコーディングされたリテラルは受け入れられますか?
私が現在取り組んでいるコード ベースには、ハードコードされた値が散らばっています。
私はすべてのハードコードされた値をコードのにおいと見なし、可能な限りそれらを排除しようとしています...しかし、確信が持てない場合がいくつかあります。
ベスト プラクティスとは何かを考えさせられる 2 つの例を次に示します。
最初のケースでは、設定ファイルで MyHelper.Yes と MyHelper.No を実行できるようにするクラスを作成するのが最善の方法です (ただし、変更される可能性は低く、変更される可能性があるかどうかは誰にもわかりません)その使用法で大文字と小文字が区別されるケースはありません)。
2 番目のケースでは、100 で割ってパーセンテージを求めることは、数学の法則が変わらない限り変わることはありそうにありませんが、もっと良い方法があるのではないかと考えています。
この種のハードコーディングに対処する適切な方法を提案できる人はいますか? また、ハードコーディングが許容される場所を思いつく人はいますか?
language-agnostic - ハードコーディングされたSTRINGSは受け入れられますか?
ハードコーディングされたリテラルはこれまでに受け入れられますか?に似ている 、しかし、私はここで「魔法の糸」を具体的に考えています。
大規模なプロジェクトでは、次のような構成オプションの表があります。
(何百もの)。
一般的な方法は、ジェネリック関数を呼び出して、次のようにオプションをテストすることです。
(もちろん、この同じオプションは、システム コードの多くの場所でチェックする必要があるかもしれません。)
新しいオプションを追加するとき、次のような「魔法の文字列」を非表示にする機能を追加することを検討していました。
しかし、同僚は私がやり過ぎだと思って、これを行うことに反対しました。
- それが私たちが通常していることです
- コードのデバッグ時に何が起こっているかを簡単に確認できます
問題は、私には彼らの要点がわかるということです! 現実的には、何らかの理由でオプションの名前を変更することは決してありません。そのため、私の関数について考えられる唯一の利点は、コンパイラが fo_enabled() のようなタイプミスを検出するが、'FO_ENABLED' は検出しないことです。
どう思いますか?他の利点/欠点を見逃していませんか?
c# - HTML をハードコーディングせずに HTML レポートを作成するにはどうすればよいですか?
私は現在、データベースに保存されている値に基づいてレポートを生成することを主な役割とするコンソール アプリケーションをリファクタリングしています。
私が今までレポートを作成してきた方法は次のとおりです。
(上記は単なるサンプルです...書式設定については申し訳ありません...横スクロールを必要としないように書式設定しようとしました....)
私は本当に私がこれをした方法が好きではありません。それは機能し、今のところ仕事をしています...しかし、私はそれが保守可能だとは思いません...特に、作成する必要があるhtmlに関してレポートがさらに複雑になる場合. さらに悪いことに、私のチームの他の開発者は、HTML レポートを生成するアプリケーション用に私のコードをコピー アンド ペーストし、ひどい混乱を引き起こす可能性があります。(私はすでにそのような恐怖が生み出されるのを見てきました!レポートの詳細を取得するために数百行のハードコードされた SQL を含むレポート関数を想像してみてください...それは大人の男を泣かせるのに十分です!)
しかし、私はこれがまったく好きではありませんが...私はそれを行う別の方法を考えることはできません.
確かにこれを行う方法があるに違いありません...私はそれを確信しています。少し前まで、aspx ページでテーブルを生成するときに同じことをしていましたが、オブジェクトをコントロールにバインドして .NET にレンダリングを任せることができることを誰かが親切に教えてくれました。上記のコードに似たひどいコードが、2 ~ 3 行のエレガントなコードに変わりました。
HTMLをハードコーディングせずに、このレポートのHTMLを作成する同様の方法を知っている人はいますか?
coding-style - ハードコーディングに対するあなたの態度はどうですか?
私のはこれです:
ハードコーディングがその方法です!私の問題はすべてなくなります。1つずつコーディングするだけです。そして、問題が戻ってきてあなたの一日を殺します。
私は絶対に嫌いでしたが、実際には「ビジネスマン」は欲しいものを手に入れるのに時間がかからないのでそれを好む傾向があります。そして、特に企業環境で働くソフトウェア開発者として、ほとんどの人は「ええ、なぜわざわざ、それをハードコーディングするだけです」と言うでしょう。ハードコーディングに対するあなたの態度はどうですか?
hibernate - HQL、Hibernateでハードコードされたフィールド名を避けるには?
次の HQL があるとします。
MyEntity
のメンバー変数の名前をリファクタリングして別の名前に変更したい場合はaField
、Strings のコード全体のすべての出現箇所も変更する必要があります。1 つの hql 文字列を変更するのを忘れると、コードが壊れます。
どうすればこれを回避できますか?
abstraction - データが 1 つのアプリによって消費される場合、データの単純なリストをハードコーディングする代わりに、データベース テーブルを使用する利点
しばらくの間、米国の州 (および準州) のリストをデータベース テーブルに格納し、その情報を使用するアプリケーション用にキャッシュする必要があると多くの人から言われてきました。彼らが私にこれを与えた唯一の理由は、正規化を促進するためであり、「それが私たちが常に行ってきた方法である」ためです.
アプリケーションの範囲が国際的に拡大するためにリストが頻繁に変更される場合 (たとえば、カナダの州を含めるなど)、国識別子も示すデータテーブルにリストを抽象化することは理解できます。ただし、リストがほとんどロックされており、アプリケーションの 1 つの画面でしか使用されていない場合、クエリとキャッシュを実行する価値はありますか? SMALLINT 外部キーを保存することの違いは、CHAR(2) よりもはるかに優れていますか? それは常に実用的ですか?
私が一緒に働いた会社で見たこの傾向について考えていました。
database - 別のデータベースユーザーを動的に参照するにはどうすればよいですか?
別のデータベースユーザーを参照する必要がある場合があります。データベースのユーザー名を参照しながら、ビューにハードコーディングする必要があります。
ビューから動的に、またはデータベース設定に基づいて、そのdbユーザー(eg001t3)を参照する方法はありますか?
definition - 「ハードコードされた」とはどういう意味ですか?
私の割り当てでは、test.txt
ドキュメントにアクセスするように求められているため、ファイル名をCドライブにハードコーディングする必要があります。ハードコーディングの意味がわかりません。誰かがこれを手伝ってくれませんか?
sql-server - SQL Server:クロスデータベースビューでのデータベース名のハードコーディングの回避
したがって、同じサーバー上に、ビュー、関数、およびストアドプロシージャで相互にテーブルを参照する2つのSQLServerデータベースがあるとします。
あなたが知っている、このようなもの:
(クロスデータベースビューはあまり良い方法ではないことは知っていますが、それで行き詰まっているとだけ言っておきましょう)
データベース名の「ハードコーディング」を回避するための優れた手法はありますか?
(したがって、場合によっては別のデータベースを再度指す必要がある場合(おそらくテストのために)、大量のビュー、fns、spsを編集する必要はありません)
SQL2005またはSQL2008ソリューションに興味があります。乾杯。
.net - 文字列のハードコーディングを避ける方法
これは、コーディングのベスト プラクティスに関する質問です。.NET アプリケーションで文字列と値のハードコーディングを回避する最善の方法についてのコンセンサスを知りたいです。私が以前働いていた場所でこれまでに見たもの:
- リソース .resx ファイルの使用
- これらの値と文字列を App.config または web.config に保存する
静的クラス ApplicationStrings を作成し、そこにすべての文字列と値を宣言します。
/li>
しかし、3番目の方法ではなく、別のハードコードですか? このようなクラスがあることに意味はありますか?利点は、すべての文字列が 1 か所にあることですが、それは本当にハードコードを回避しているのでしょうか?
また、この状況で他の習慣を身につけた場合は、遠慮なく投稿してください。