web-dev-qa-db-ja.com

「ハードコーディング」とはどういう意味ですか?

私の割り当てでは、test.txtドキュメント。したがって、ファイル名はCドライブにハードコーディングする必要があります。ハードコーディングの意味がわかりません。誰かがこれを手伝ってくれますか?

21
LilProblems

「ハードコーディング」とは、ソースコードに何かを入れることを意味します。 notハードコーディングの場合、ユーザーにデータの入力を求めるか、ユーザーがデータをコマンドラインに入力できるようにするか、そのようなことを行います。

したがって、ファイルの場所をC:ドライブにあるとハードコードするには、ファイルのパス名をソースコードにすべてまとめます。

以下に例を示します。

int main()
{
    const char *filename = "C:\\myfile.txt";

    printf("Filename is: %s\n", filename);
}

ファイル名は次のように「ハードコード」されています:C:\myfile.txt

バックスラッシュが2重になっているのは、バックスラッシュがC文字列で特別だからです。

45
steveha

「ハードコーディング」とは、プログラムや、直接変更できないプロジェクトに埋め込むものを意味します。たとえば、データベースサーバーを使用している場合は、データベースをプロジェクトに接続するためにハードコードする必要があり、ユーザーが変更することはできません。あなたがハードコーディングしているからです。

11
Alex

シナリオ

大学では多くの学生がさまざまなコースを受講しており、試験後、成績を示すマークカードを準備する必要があります。グレードは2つの方法で計算できます

1。このようなコードを書くことができます

    if(totalMark <= 100 && totalMark > 90) { grade = "A+"; }
    else if(totalMark <= 90 && totalMark > 80) { grade = "A"; }
    else if(totalMark <= 80 && totalMark > 70) { grade = "B"; }
    else if(totalMark <= 70 && totalMark > 60) { grade = "C"; }

2。ユーザーにグレード定義を入力してそのデータを保存するように依頼することができます

データベーステーブルに保存するようなもの enter image description here

最初のケースでは、グレードはすべてのコースで共通であり、ルールが変更された場合、コードを変更する必要があります。ただし、2番目のケースでは、ユーザーの要件に基づいて成績を入力するための規定をユーザーに提供しています。そのため、評定ルールが変更されてもコードは変更されません。

これは、ユーザーがビジネスロジックを定義するためにより多くのプロビジョニングを提供する場合に重要です。最初のケースはHard Codingに他なりません。

だからあなたの質問では、ユーザーにファイルのパスを最初に入力するように頼むと、コード内のハードコードされたパスを削除できます。

2
Arun Sudhakaran

Hard-Codingの反意語は、Soft-Codingです。ハードコーディングの理解を深めるために、両方の用語を紹介します。

  • ハードコーディング:構成が許可されていない機能がシステムにコーディングされています。
  • Parametric:機能は、テーブル駆動型、またはパラメータ値が制限されたプロパティファイルを介して構成可能です。
  • ソフトコーディング:この機能は、任意の数のパラメトリック値(BREのビジネスルールなど)に基づいて結果を導き出す「エンジン」を使用します。ルールはコーディングされていますが、システム内のパラメーターとして存在し、スクリプト形式で記述されています

例:

// firstName has a hard-coded value of "hello world"
string firstName = "hello world";

// firstName has a non-hard-coded provided as input
Console.WriteLine("first name :");
string firstName = Console.ReadLine();

ハードコーディングされた定数[1]

float areaOfCircle(int radius)
{
    float area = 0;
    area = 3.14*radius*radius;  //  3.14 is a hard-coded value
    return area;
}

さらに、ハードコーディングとソフトコーディングは、アンチパターンとみなすことができます[2]。したがって、ハードコーディングとソフトコーディングのバランスをとる必要があります。

  1. ハードコーディングハードコーディング」は、よく知られているアンチパターンですほとんどのWeb開発の本は、序文で警告しています。ハードコーディングは、ファイルパスやリモートホスト名などの構成データまたは入力データを保存する残念な方法です構成ファイル、データベース、ユーザー入力、または別の外部ソースから取得するのではなく、ソースコードで.

    ハードコードの主な問題は、特定の環境でのみ適切に動作することです、および条件が変わるたびに、通常は複数の別々の場所でソースコードを変更する必要があります

  2. ソフトコーディング
    ハードコーディングの落とし穴を避けるために一生懸命努力すると、「soft coding」と呼ばれる別のアンチパターンに簡単に遭遇する可能性があります。その正反対です。

    ソフトコーディングでは、ソースコードにあるべきものを外部ソースに入れます。たとえば、ビジネスロジックをデータベースに保存します。私たちがそうする最も一般的な理由は、ビジネスルールが将来変更される恐れがあるため、コードを書き直す必要があります。

    極端な場合、ソフトコーディングされたプログラムは、非常に抽象的で複雑になり、理解するのはほとんど不可能です(特に新しいチームの場合)メンバー)、および非常に維持およびデバッグが困難です

出典と引用:

1: Quora:コンピュータープログラミングのコンテキストでハードコードされたものは何を意味しますか?
2: Hongkiat:避けなければならない10のコーディングアンチパターン

さらに読む:

ソフトウェアエンジニアリングSE:アプリケーションに値をハードコーディングするのは良い考えですか?
Wikipedia:Hardcoding
Wikipedia:ソフトコーディング

1
leonidaa