l

2018年9月19日 星期三

擁抱改變,遠離Hard Code

September 19 08:37~09:12

Steve Jobs and the Apple Lisa

▲圖片來源在此


寫死(Hard Code)

幾天前一位朋友在Facebook上發問:「如何對非資訊人員解釋寫死(hard code)?」

維基百科對於寫死的解釋如下:

寫死(英語:Hard CodeHard Coding)是指在軟體實作上,將輸出或輸入的相關參數(例如:路徑、輸出的形式或格式)直接以常數的方式撰寫在原始碼中,而非在執行期間由外界指定的設定、資源、資料或格式做出適當回應。一般被認定是種反模式或不完美的實作,因為軟體受到輸入資料或輸出格式的改變就必須修改原始碼,對客戶而言,改變原始碼之外的小設定也許還比較容易。

***

以上解釋,清楚明白,資訊人員一定看得懂,但對非資訊人員可就不好說。昨天Teddy在讀《溫伯格的軟體管理學:第一級評量》看到一個例子:

一間荷蘭公司買了六台Apple Lisa電腦,想試看看能否推廣到整個實驗室使用。誰知Lisa的列印功能被寫死只支援美國標準規格的信紙,不支援歐洲標準規格的信紙,而且使用者也無法自行設定信紙大小(因為信紙大小寫死在程式中)。最後六台電腦全被退貨。

***

適合(Fitness)

在Lisa的故事中溫伯格提到:「一個系統換到新的環境,品質也會改變。……在某些美國人眼中Lisa是一種高品質的電腦。很少有歐洲人這麼認為。」。

以上這個觀念可以用建築師Alexander的pattern框架來解釋,如下圖所示:

螢幕截圖 2018-09-19 08.58.47


▲同樣的Form(Lisa電腦),移到不同的Context(美國或歐洲),原本的好品質/好設計,就可能變成爛品質/爛設計。所以Alexander說:「好設計是Form與Context的適合關係。」

***

結論

寫死的程式碼降低軟體系統(Form)適應不同Context的能力,只要使用的情境改變,原本可以動的程式或功能可能就無法使用。

在大部分的情況下,開發人員請記住以下格言:

擁抱改變,遠離Hard Code

***

友藏內心獨白:什麼是Lisa電腦?

3 則留言:

  1. 移到大陸,月球也會有對應的規格....就是context改變了,form就需要對應的改變....

    回覆刪除
  2. 如果要對我的美術 partner 解釋,Hard code 就是 "想像一下你的桌腳被焊死在地板上,不准換、不准搬、壞了就原地修。"... = =

    回覆刪除
    回覆
    1. 我會解釋成 Hard Code 就是筆刷大小不能改 XD

      刪除