硬编码
维基百科,自由的百科全书
硬编码或稱寫死 (英文稱 hard code, hard coding) 指的是在軟件實現上,把輸出的相關因子 (例如:路徑、輸出的形式、格式) 直接寫死在原代碼、其他執行的資料、或者固定格式的資料上,而非在執行時期由外界給定的資源、資料、或者格式做出適當回應。
寫死,一般咸認是種反模式或者不好的實現,它要求軟件原代碼因應輸入資料、或者希望的格式改變而修改。對客戶而言,改些原代碼之外的小設定也許容易點。
目录 |
[编辑] 實例
[编辑] 產品啟動碼(Active Product)
指的是某軟體經常檢查它的開發商網站以確認該軟體獨一無二的的產品啟動碼沒有列入黑名單或者該軟體屬盜版軟件。如果該開發商網站變了樣、改了網域名、亦或開發商破產且它的站關了,該軟體將停止工作。
造成這種情況的軟體開發者應該被認為是個嚴重過失,因為網站常常消失、更動。然而,這些考慮常常被忽略,原因歸咎於軟體開發者對網站或公司未來存在的傲慢態度,或者對遙遠未來客戶身上將發生什麼事的消極態度。
[编辑] 固定安裝路徑
想像一下某個視窗軟件要求你一定要裝在 C:\Program Files\Appname 下,不裝在該目錄下就無法安裝、或者裝了後不工作,你對這軟體的感覺如何?
這類程式偶而在市場上見到,因為有相當廣大的用戶偏好安裝在預設磁碟以及預設目錄,而軟體測試無法找到這個問題。然而,對程式設計師或開發人員還是建議不要寫死軟體安裝路徑;因為你永遠不知道路徑名用哪國語言寫的,而且不見得每個裝載視窗的機器都有 C: 槽。
[编辑] 啟動碟
指的是某軟件在啟動時經常檢查存在軟碟上的某特殊檔案,以確定該軟碟不是盜版。假設該電腦升級到沒有軟碟的新機器,該軟件便無法執行,因為軟碟沒地方插。
這個範例展示寫死的壞處,即使它在當時完全行得通。在80到90年代,無法想像一台計算機沒有軟碟,然而到現在這是挺正常的事。如果某程序在15年前寫死,而且沒有發布任何patch,該程序可能面對很嚴重的問題。又,許多公司不關心它們的程式會不會在15年後被執行,該程式實際上可能是計畫中淘汰的一個類型。