在最近的学习过程中,了解到了硬编码这一个名词,于是就去百度了一下,从字面意思上来看,我对硬编码的理解就是一种类似于编程语言的东西,但百度过后发现好像每一篇文章对硬编码的讲解都不大一样,搞得我一脸懵逼,于是就来总结一下各篇文章的讲解。首先我们看一下百度百科的结果:

硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践,与从外部获取数据或在运行时生成数据不同。
硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改,尽管可以使用调试器或十六进制编辑器在内存或磁盘上进行更改。
硬编码的数据通常表示不变的信息,例如物理常量,版本号和静态文本元素。
另一方面,软编码数据对用户输入,HTTP服务器响应或配置文件等任意信息进行编码,并在运行时确定。

看完以后仍然一脸懵逼,于是继续百度,过程中看到了一个例子:
硬编码:

if (a == 2) {
  a = 1;

}

在此,a直接用固定数值2限定死了,如果想要修改的话(修改a的值或者==号右边的值都是很不方便的,而且很容易出错)很不方便。

软编码

int a = 2;

int b = 3;

if (a == b) {
  a ++;

}

在此,a和b都是变量名称,我们完全可以在初始化a和b的时候给二者赋值,不必直接用固定数值限定死,这样有利于方便修改,可谓”占据制高点,统筹全局”。
转载于:https://www.cnblogs.com/zhongshujunqia/p/4611543.html

看过这两条例子以后,大概了解到硬编码只是一种编程方式。再结合百度百科的结果:硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改,尽管可以使用调试器或十六进制编辑器在内存或磁盘上进行更改。大概了解到硬编码是把一个本来应该(可以)写到配置信息中的信息直接在程序代码中写死了。
例如,写了一个收发邮件的程序,用户名,密码,服务器地址等最好做成外部配置, 但是如果直接写死在程序代码中,每次改信息时需要重新编译了……这种程序不好维护。一般懒的程序员或者初学者这种程序产量较大。
在计算机程序或文本编辑中,hardcode(这个词比hard code用起来要频繁一些)是指将可变变量用一个固定值来代替的方法。
用这种方法编译后,如果以后需要更改此变量就非常困难了。
大部分程序语言里,可以将一个固定数值定义为一个标记,然后用这个特殊标记来取代变量名称。当标记名称改变时,变量名不变,这样,当重新编译整个程序时,所有变量都不再是固定值,这样就更容易的实现了改变变量的目的。
尽管通过编辑器的查找替换功能也能实现整个变量名称的替换,但也很有可能出现多换或者少换的情况,而在计算机程序中,任何小错误的出现都是不可饶恕的。
最好的方法是单独为变量名划分空间,来实现这种变化,就如同前面说的那样,将需要改变的变量名暂时用一个定义好的标记名称来代替就是一种很好的方法。
通常情况下,都应该避免使用hardcode方法。有时也用hardcode来形容那些非常难学的语言,比如C或者C++语言,相对的,用softcode来形容象VB这类简单好用的程序语言。
hardcode就是固化的代码。有的代码不能写死,不然修改起来很麻烦。比如说写链接写死www.abc.com,所有的地方都用这个,如果下次域名变了,那么就要找到所有的www.abc.com修改成新的域名。
但是如果用一个常量来存放www.abc.com,然后所有链接都引用常量,那么以后修改就只要修改常量了。

部分内容参考于https://zhuanlan.zhihu.com/p/54134459