搜尋工具回報零筆命中,通常會被當成「這個東西不存在」。
它只說了一件事:在我這次看過的範圍裡,用這個寫法,沒有找到。
三種會安靜回零的情況
① 工具跳過了某些檔案。 版本控制的搜尋預設會跳過它判定為二進位的檔案,而判定依據可能只是前幾個位元組。一個以資料列組成的紀錄檔很容易被判成二進位 —— 它會被整個跳過,而且不會告訴你。
② 範圍不是你以為的範圍。 忽略規則、路徑參數、預設的深度限制,任何一個都可以讓你的搜尋只跑了一半。
③ 寫法不是內容的寫法。 中文檔名在連結裡是百分比編碼,識別碼在設定檔裡可能帶引號或跳脫。字面搜尋找的是字面。
我們差點犯的錯
那次的零命中,被拿來當成「沒有人引用過這份東西,所以可以刪」的依據。
實際上引用它的是一個紀錄檔,被當成二進位跳過了。如果照著零命中往下走,會刪掉一個還在用的東西 —— 而且要等到很久以後才會有人發現。
紀律
零命中要當成「需要用第二種方法確認」的訊號,不是結論。
想證明一個東西不存在,至少要兩種原理不同的查法都說沒有。一種靠字面,另一種靠結構 —— 例如直接把檔案內容倒出來再過濾,跳過那個會自作主張的判定。
⚠️ 存在只要一個證據,不存在要的是覆蓋。


