私の割り当てでは、test.txt
ドキュメントにアクセスするように求められているため、ファイル名をCドライブにハードコーディングする必要があります。ハードコーディングの意味がわかりません。誰かがこれを手伝ってくれませんか?
5 に答える
「ハードコーディング」とは、ソースコードに何かを入れることを意味します。ハードコーディングしていない場合は、ユーザーにデータの入力を求める、またはユーザーがデータをコマンドラインに配置できるようにするなどの操作を行います。
したがって、ファイルの場所をC:ドライブ上にあるものとしてハードコーディングするには、ファイルのパス名をすべてソースコードにまとめます。
これが例です。
int main()
{
const char *filename = "C:\\myfile.txt";
printf("Filename is: %s\n", filename);
}
ファイル名は次のように「ハードコード」されています。C:\myfile.txt
バックスラッシュが2倍になる理由は、バックスラッシュがC文字列では特殊であるためです。
「ハードコーディング」とは、プログラムまたは直接変更できないプロジェクトに埋め込みたいものを意味します。たとえば、データベースサーバーを使用している場合は、データベースをプロジェクトに接続するためにハードコーディングする必要があり、ユーザーが変更することはできません。ハードコーディングしているからです。
ハードコーディングの反意語はソフトコーディングです。ハードコーディングをよりよく理解するために、両方の用語を紹介します。
- ハードコーディング:機能はシステムにコーディングされており、構成はできません。
- パラメトリック:機能は、テーブル駆動、またはパラメトリック値が制限されたプロパティファイルを介して構成できます。
- ソフトコーディング:機能は、任意の数のパラメトリック値(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]。したがって、ハードコーディングとソフトコーディングのバランスをとる必要があります。
- ハードコーディング 「<strong>ハードコーディング」はよく知られたアンチパターンであり、ほとんどのWeb開発の本が序文で警告しています。ハードコーディングは、構成ファイル、データベース、ユーザー入力、または別の外部ソースから取得するのではなく、構成または入力データ(ファイルパスやリモートホスト名など)をソースコードに保存するという不幸な慣習です。 。
ハードコードの主な問題は、特定の環境でのみ正しく機能することです。条件が変わるたびに、通常は複数の別々の場所でソースコード を変更する必要があります。- ソフトコーディング
ハードコーディングの落とし穴を回避するために一生懸命努力すると、「<strong>ソフトコーディング」と呼ばれる別のアンチパターンに簡単に遭遇する可能性があります。これは正反対です。
ソフトコーディングでは、ソースコードに含める必要のあるものを外部ソースに配置します。たとえば、ビジネスロジックをデータベースに保存します。私たちがそうする最も一般的な理由は、ビジネスルールが将来変更されることを恐れているため、コードを書き直す必要があります。
極端な場合、ソフトコード化されたプログラムは非常に抽象的で複雑になり、理解することがほとんど不可能になり(特に新しいチームメンバーの場合)、保守とデバッグが非常に困難になる可能性があります。
出典と引用:
1:Quora:コンピュータープログラミングのコンテキストでハードコーディングされたものはどういう意味ですか?
2:Hongkiat:避ける必要のある10のコーディングアンチパターン
参考文献:
ソフトウェアエンジニアリングSE:アプリケーションに値をハードコーディングするのは良い考えですか?
ウィキペディア:ハードコーディング
ウィキペディア:ソフトコーディング
シナリオ
大学にはさまざまなコースを受講している学生が多く、試験後、成績を示すマークカードを用意する必要があります。グレード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.どこかに勾配定義を入力して、そのデータを保存するようにユーザーに依頼できます。
最初のケースでは、成績はすべてのコースに共通であり、ルールが変更された場合はコードを変更する必要があります。ただし、2番目のケースでは、ユーザーの要件に基づいてグレードを入力するためのプロビジョニングをユーザーに提供しています。したがって、成績規則が変更されてもコードは変更されません。
これは、ユーザーがビジネスロジックを定義するためのプロビジョニングを増やすときに重要なことです。最初のケースはハードコーディングに他なりません。
したがって、質問の最初にファイルのパスを入力するようにユーザーに依頼すると、コード内のハードコードされたパスを削除できます。
コーディングには2つのタイプがあります。
(1)ハードコーディング(2)ソフトコーディング
ハードコーディング。ソースコードの書き込み中にプログラムに値を割り当て、プログラムの実行可能ファイルを作成します。現在、プログラムのソースコード値を変更または変更するプロセスは非常に困難です。ブロックチェーンテクノロジーと同様に、ジェネシスブロックはハードコードであり、変更または変更することはできません。
ソフトコーディング:外部ソースからコンピュータプログラムに値を挿入するプロセスです。キーボード、コマンドラインインターフェイスを介して値を挿入するようなものです。開発者はプログラムを簡単に変更できるため、ソフトコーディングは優れたプログラミング手法と見なされています。