寫死hard-coding)是指在軟體實作上,將輸出或輸入的相關參數(例如:路徑、輸出的形式或格式)直接以常數的方式撰寫在原始碼中,而非在執行期間由外界指定的設定、資源、資料或格式做出適當回應。一般被認定是種反模式或不完美的實作,因為軟體受到輸入資料或輸出格式的改變就必須修改原始碼,對客戶而言,改變原始碼之外的小設定也許還比較容易。白話來說就是指給定一個問題只會給出一種答案,每次給出的答案都是固定的。

但寫死的狀況也並非完全只有缺陷,因某些封裝需要或軟體本身的保護措施,有時是必要的手段。除此之外,有時候因應某些特殊的需求,製作出簡單的應用程式,應用程式可能只會執行一次或者有限的幾次,抑或永遠只應付某種單一需求,利用寫死來縮短開發的時間也是一種不錯的決策。

實例

產品啟動碼

指的是某軟體經常檢查它的開發商網站,以確認該軟體獨一無二的產品啟動碼沒有被列入黑名單或該軟體屬盜版軟體,如果該開發商網站變更或改變域名,甚至開發商破產且關閉服務網站,則該軟體便停止工作。上述情況是個嚴重的過失,因為網站消失或更動的狀況被忽略,而導致軟體無法在客戶端的電腦上執行。

固定安裝路徑

一些Windows軟體在編寫時,安裝路徑被強迫鎖定在「C:\Program Files\Appname」之下,導致若不安裝在該鎖定目錄下就無法順利安裝和執行。因為較少使用者會將軟體安裝在非預設資料夾下,所以很多時候都不會碰到這個問題,但如果使用者電腦內的Windows系列OS並無預設安裝路徑的磁碟分割區(例如沒有C:槽),則該使用者便無法成功安裝。

啟動盤

指的是某軟體在啟動時,經常檢查儲存在軟碟上的某特殊檔案,進以確定該軟體是否為盜版。假設該電腦已升級成沒有軟碟機的電腦,則該軟體便無法執行,因為需外接和接受軟體檢驗的軟碟無處可讀取。

在80到90年代,軟碟驅動幾乎是電腦標配,但這在今天軟碟已被淘汰。如果某程式在數年前被寫死,且沒有發布任何更新以更正此瑕疵,則該程式便會面對很嚴重的問題。