硬编码hard-coding)是指在软件实现上,将输出或输入的相关参数(例如:路径、输出的形式或格式)直接以常量的方式撰写在源代码中,而非在执行期间由外界指定的设置、资源、资料或格式做出适当回应。一般被认定是种反模式或不完美的实现,因为软件受到输入资料或输出格式的改变就必须修改源代码,对客户而言,改变源代码之外的小设置也许还比较容易。白话来说就是指给定一个问题只会给出一种答案,每次给出的答案都是固定的。

但硬编码的状况也并非完全只有缺陷,因某些封装需要或软件本身的保护措施,有时是必要的手段。除此之外,有时候因应某些特殊的需求,制作出简单的应用程序,应用程序可能只会执行一次或者有限的几次,抑或永远只应付某种单一需求,利用硬编码来缩短开发的时间也是一种不错的决策。

实例

编辑

产品启动码

编辑

指的是某软件经常检查它的开发商网站,以确认该软件独一无二的产品启动码没有被列入黑名单或该软件属盗版软件,如果该开发商网站变更或改变域名,甚至开发商破产且关闭服务网站,则该软件便停止工作。上述情况是个严重的过失,因为网站消失或更动的状况被忽略,而导致软件无法在客户端的电脑上执行。

固定安装路径

编辑

一些Windows软件在编写时,安装路径被强迫锁定在“C:\Program Files\Appname”之下,导致若不安装在该锁定目录下就无法顺利安装和执行。因为较少用户会将软件安装在非默认文件夹下,所以很多时候都不会碰到这个问题,但如果用户电脑内的Windows系列OS并无默认安装路径的磁盘分区(例如没有C:槽),则该用户便无法成功安装。

启动盘

编辑

指的是某软件在启动时,经常检查存储在软盘上的某特殊文件,进以确定该软件是否为盗版。假设该电脑已升级成没有软盘驱动器的电脑,则该软件便无法执行,因为需外接和接受软件检验的软盘无处可读取。

在80到90年代,软盘驱动几乎是电脑标配,但这在今天软盘已被淘汰。如果某程序在数年前被硬编码,且没有发布任何更新以更正此瑕疵,则该程序便会面对很严重的问题。