硬编码 (hard code 或hard coding )指的是在软件 实现 上,把输出或输入的相关参数 (例如:路径、输出的形式、格式)直接硬编码在源代码 中,而非在运行时期由外界指定的设置、资源、数据、或者格式做出适当回应。
硬编码,一般被认是种反模式 或者不好的实现,软件因应输入数据、或者输出的格式改变就必需修改源代码。对客户而言,改变源代码之外的小设置也许容易点。
硬编码,也并非完全只有缺陷,因应某些封装需要,或是软件保护的措施,硬编码有时候是必要的手段。除此之外有时候因应某些特殊的需求,制作出简单的应用程序,应用程序可能只会运行一次,或者永远只应付一种需求,杀鸡焉用牛刀,硬编码来缩短开发的时间,也是一种不错的决策。
产品激活码(Active Product)
指的是某软件经常检查它的开发商网站以确认该软件独一无二的的产品激活码没有列入黑名单或者该软件属盗版软件 。如果该开发商网站变了样、改了网域名 、亦或开发商破产且它的站关了,该软件将停止工作。
造成这种情况的软件开发者应该被认`1为是个严重过失,因为网站常常消失、更动。然而,这些考虑常常被忽略,原因归咎于软件开发者对网站或公司未来存在的傲慢态度,或者对遥远未来客户身上将发生什么事的消极态度。
固定安装路径
一些 Windows 软件在编写时,假设用者一定会将它安装在 C:/Program Files/Appname 下,于是导致不装在该目录下就无法安装、或者装了后不工作。因为有相当广大的用户偏好安装在默认磁盘以及默认目录,所以很多时不会碰到这个问题,而且软件 测试也可能无法找到这个问题。然而,对程序设计师或开发人员来说还是建议不要硬编码软件安装路径;因为你永远不知道路径名用哪国语言写的,而且不见得每个 装载 Windows 的机器都有 C: 磁盘驱动器。
启动盘
指的是某软件在激活时经常检查存在软盘上的某特殊文件,以确定该软盘不是盗版。假设该计算机 升级到没有软盘的新机器,该软件便无法运行,因为软盘没地方插。
在80 到90年代 ,无法想像一台计算机没有软盘,然而到现在这是很正常的事,因为软盘 已被淘汰了。如果某程序在15年前硬编码,而且没有发布任何补丁,该程序可能面对很严重的问题。当然,许多公司不关心它们的程序会不会在15年后被运行,甚至实际上可能是有计划地淘汰该程序的一种做法。