“硬编码”是什么意思?

时间:2009-12-13 06:55:00

标签: definition hard-coding

我的作业要求我访问test.txt文档,因此文件名必须硬编码到我的C盘。我不知道硬编码意味着什么。有人可以帮帮我吗?

5 个答案:

答案 0 :(得分:43)

“硬编码”意味着在您的源代码中加入一些内容。如果你硬编码,那么你会做一些事情,比如提示用户输入数据,或允许用户将数据放在命令行上,或类似的东西。

因此,要将文件的位置硬编码为C:驱动器,您只需将文件的路径名全部放在源代码中即可。

这是一个例子。

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

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

文件名“硬编码”为:C:\myfile.txt

反斜杠加倍的原因是因为反斜杠在C字符串中是特殊的。

答案 1 :(得分:11)

“硬编码”表示您希望嵌入程序或任何无法直接更改的项目。    例如,如果您使用的是数据库服务器,则必须进行硬编码以将数据库与项目连接,并且用户无法更改。 因为你有硬编码。

答案 2 :(得分: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

在第一种情况下,所有课程的成绩都是通用的,如果规则发生变化,则需要更改代码。但对于第二种情况,我们正在根据用户的要求向用户提供输入等级的规定。因此,当成绩规则发生变化时,代码将不会被更改。

当您为用户提供更多供应来定义业务逻辑时,这一点非常重要。第一种情况只是硬编码

因此,如果您要求用户在开始时输入文件的路径,那么您可以在代码中删除硬编码路径。

答案 3 :(得分:1)

硬编码的反义词是软编码。为了更好地理解硬编码,我将介绍这两个术语。

  • 硬编码:功能编码到系统,不允许配置;
  • 参数:功能可通过表驱动或具有有限参数值的属性文件进行配置;
  • 软编码:功能使用“引擎”,根据任意数量的参数值(例如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. 硬编码   “硬编码”是众所周知的反模式,大多数网络开发书籍都在前言中对此进行了警告。硬编码是一种不幸的做法,其中我们存储配置或输入数据,例如文件路径或远程主机名,源代码中的 而不是从配置文件,数据库,用户输入或其他外部源。   

      硬代码的主要问题是它只能在特定环境中正常工作,而在条件发生变化的任何时候,我们都需要修改源代码,通常是多个分开的地方。   

  2.   
  3. 软编码
      如果我们非常努力地避免硬编码的陷阱,我们可以很容易地遇到另一个名为“软编码”的反模式,这恰恰相反。   

      在软编码中,我们将应该在源代码中的内容放入外部源,例如我们将业务逻辑存储在数据库中。我们这样做的最常见原因是担心业务规则将来会发生变化,因此我们需要重写代码。   

      在极端情况下,软编码程序可以变得如此抽象和复杂,几乎不可能理解它(特别是对于新的团队成员),并且非常难以维护和调试
  4.   

来源和引文:

1:Quora: What does hard-coded something mean in computer programming context?
2:Hongkiat: The 10 Coding Antipatterns You Must Avoid

进一步阅读:

Software Engineering SE: Is it ever a good idea to hardcode values into our applications?
Wikipedia: Hardcoding
Wikipedia: Soft-coding

答案 4 :(得分:0)

有两种编码方式。

(1)硬编码 (2)软编码

硬编码。在编写源代码的过程中为程序分配值并创建程序的可执行文件。现在,更改或修改程序源代码的值非常困难。就像区块链技术一样,创世区块是无法更改或修改的硬代码。

软编码:这是将来自外部源的值插入计算机程序的过程。例如通过键盘,命令行界面插入值。软编码被认为是良好的编程习惯,因为开发人员可以轻松地修改程序。