那支程式的工作很單純:掃過所有樣式檔,找出被直接寫成十六進位色碼、沒有走設計 token 的地方。
寫完當天跑了一次,綠燈。之後每天跑,每天綠燈。
兩週後,有人在檔案裡隨手翻到一個很明顯的裸寫色碼。它應該要被抓到。
回頭查
匹配用的正則少了一個字元類別,掃描範圍解析出來是一個空清單。
也就是說,它每天都很認真地掃了零個檔案,然後回報通過。
那兩週本身倒還好。麻煩的是,那段時間我們以為這件事有人在看,所以也就沒再用眼睛看。
把正則修好,只修好了這一次
下次換一支檢查器,同樣的事還會再發生。我們後來加了一條規矩:每一支檢查器都要附一個會讓它失敗的輸入。
做法是一個 --selftest 參數。它拿一份刻意做壞的假資料餵進去,如果檢查器沒有報錯,--selftest 自己以退出碼 1 結束。
這樣綠燈的意思就變了。以前是「沒看到問題」,現在是「看了,而且證明過看得見」。
不只是程式
設計規範也一樣。一份規範如果沒有附誤用範例,沒有人判斷得了手上這張圖算不算違反,它就只是一疊建議。
交接文件也是。沒有人照著它從零跑過一次的話,寫得再完整,讀起來也比較像回憶錄。
我們現在拿到任何一個「負責把關」的東西,會先問一句:能不能舉出一個它會說「不行」的例子?


