【问题标题】:What exactly is hard coding?究竟什么是硬编码?
【发布时间】:2020-03-04 17:38:06
【问题描述】:

我相信这是一个被赋予的价值 这是无法改变的。 一个例子是:

int limit =5;
    for(int i =0 ; i<limit; i++){
        printf("w");

我不应该使用硬编码的原因是什么? 对不起,我是编程新手。

【问题讨论】:

  • 上面的硬编码示例是 5 和 "w"。通常认为最佳实践是在文件顶部附近执行const char *mode = "w"#define UPPER_LIMIT 5 之类的操作,然后在代码中使用mode 和UPPER_LIMIT。 (“w”是一个小例子,大多数人不会反对像这样对模式进行硬编码。)
  • 硬编码密码是您代码中的密码,如const char pass[]="mypassword";
  • 如果我喝到凌晨 4 点然后去 9 点上班 - 我肯定会硬编码 :)

标签: hard-coding


【解决方案1】:

“硬编码”是指您想嵌入到您的程序或任何项目中的东西 - 不能直接更改(例如,直接使用值而不是使用变量或常量)。如果您不是硬编码,那么您可以执行诸如提示用户输入数据或允许用户将数据放在命令行等操作。

因此,在您提供的示例中,您可以说打印 "w" 是“硬编码”。 此外,正如@Ingo Leonhardt 指出的那样,limit 也被“硬编码”为5

这是另一个例子:

假设我们想将我们正在处理的文件的位置硬编码为位于 C: 驱动器上,您只需将文件的路径名放在源代码中即可:

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

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

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

【讨论】:

    【解决方案2】:

    我相信这是一个被分配的值,并且无法更改。

    不,这叫做一个常数。硬编码意味着

    硬编码(也称为硬编码或硬编码)是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践

    ~Wikipedia

    因此,源代码中定义了“硬编码值”,因此只能由程序员更改。在很多情况下,您实际上不希望这样。您宁愿希望用户或管理员可以更改该值。 唯一应该“硬编码”的值是不应该改变的东西(例如物理常数)。

    【讨论】:

      【解决方案3】:

      硬编码 直接使用值而不是创建变量或常量。因此,在您的示例中,"w" 是硬编码的,但 5 不是。因此,阅读您的代码的人会知道为什么您的循环会迭代 5 次(即limit),但不知道为什么它会打印"w"

      【讨论】:

        【解决方案4】:

        硬编码是指有人直接将数据写入代码而不使用适当的方法来完成工作。

        硬编码的一个例子是,如果我需要从数据库中返回一些数据,但我写的是:

        return "(1,2,'up')"
        

        有人硬编码某些东西有几个原因,可能只是为了测试某些东西,因为写起来比实际函数快,因为现在是星期五 14:00,你想回家等等。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-17
          • 1970-01-01
          • 2014-10-28
          • 2012-08-27
          • 2010-11-12
          • 2011-03-18
          • 2011-01-22
          相关资源
          最近更新 更多