寫出特定實例的值,就取代了讀者本來要做的查證
論述基礎與限制
本卡由一批硬體排錯 work-log 的審查末端抽出。多輪審查跑完之後,待辦裡有三項是「某型號的某個指令實際輸出什麼」「某機型的偵錯介面鎖成什麼樣」這一類,而作者當時的處置是照本站既有的三層標註寫進去、把沒驗過的那幾句標成 caveat。站主否決的是整個做法,理由不在保密:寫進去的值會讓該去自己機器上查的人改讀文章。
單一站點、單一批次的自陳,機制由結構推出而未另外量測。 本卡沒有「讀者實際照抄的比例」這類數字,也不需要——處置由代價的方向決定,不由發生率決定。
核心原則
一段文字寫出特定實例的值之後,它就佔據了讀者原本要自己查的那個位置。 讀者要的是「我這台是什麼」,而文章給了「有一台是什麼」;兩者在版面上長得一樣,而特定實例的值正好是他那台會不一樣的那些——在每一台機器上都一樣的那幾類(規範定義、公開 API 的行為、機制)本來就不必他查。
所以這一類內容的危害與它的正確性無關。文中的值可以完全正確、來源可以完全可靠,而讀者把它用到自己的系統上仍然是錯的,因為那個值從來就不是關於他的系統的。
判別問句:讀者拿這一句去用,他是去查自己的系統,還是直接照抄。 照抄的那一種要改寫。
為什麼「標註未驗證」不夠
三層標註(驗過 / 標 caveat / 移除)對大多數未驗證內容是合理的處置,而它對這一類失效,差別在誰承擔預設。
標註假設讀者會讀到那個標記、並且因此改去查自己的系統。不寫假設他不會。前一個假設要讀者的自律才成立,後一個由文章的結構保證——沒有可抄的東西時,不需要任何人記得規則。
這與另一條結構性處置同形:一個欄位被降級之後,接手的閘門要在輸出上比它更像判斷標準,否則被降級的那個會靠版面繼續當閘門用。兩者都在說同一件事——把正確行為交給人的記性,代價由每一次遺忘承擔;把它做進結構,代價付一次。
還有一層讓標註更弱:caveat 是給讀完那一段的人看的,而照抄的人多半是搜尋直接落在那一行、複製、離開。他經過的路徑上沒有那個標記。
與「避免專案綁定敘事」的失效方向相反
本站另有一條規則要求教材不預設讀者熟悉特定內部專案。兩條看起來同族,而它們防的失效方向相反:
| 專案綁定敘事 | 本卡 | |
|---|---|---|
| 讀者的狀態 | 讀不懂——缺少那個專案的脈絡 | 讀懂了,而且相信了 |
| 失效的訊號 | 當場就有:他卡住了 | 沒有:文章讀起來完全正常 |
| 浮現的時點 | 閱讀當下 | 他把那個值用到自己的系統上之後 |
第二欄的失效因此不可能由讀者回報——他不會知道問題出在文章。這使它只能在寫作端擋,而擋的方式是不留可抄的東西。
「需要實機才寫得了」多半是誤判
同一批待辦裡另有兩項標成「需先實機確認」,逐項檢查之後沒有一項被硬體擋住。混淆在於把有了會更好講成需要。
一個主題通常可以拆成兩半:問題的形狀與該去哪裡查(在哪一層、用什麼機制、退到哪裡),以及某台機器上的具體答案。前一半不需要硬體,後一半依本卡不該寫。所以「等機器」這個判斷同時擋掉了該寫的那一半、又保留了不該寫的那一半——兩邊都錯。
把「需要實機」寫進待辦另有一個下游代價:往後每個看到它的人會直接跳過那一項去等硬體,而它現在就寫得了。
修法
把描述換成該去哪裡查。 不寫「這個欄位在這台機器上是什麼」,寫「這個欄位要在自己的機器上用什麼指令看」——寫成查法對每個讀者都成立,而且它交付的是能力不是答案。
機制需要具體例子才講得清時,用明顯的佔位值並寫明它是佔位的。 跨層的表示法差異、欄位的形狀這一類,抽掉數字就看不懂;保留一個一眼看得出是編出來的值,機制保住而照抄的誘因消失。
不受這一條約束的三類:機制、規範定義、公開 API 的行為。它們在每一台機器上相同,讀者查證與照抄得到同一個答案,所以寫出來沒有取代任何東西。
跟其他抽象層原則的關係
| 原則 | 關係 |
|---|---|
| #340 版號擋不住並行覆蓋 | 共用「結構保證勝過人的記性」這個處置形態:那裡是接手的閘門要在輸出上比被降級的欄位更像判斷標準,這裡是不留可抄的東西。兩者都不需要有人記得規則。 |
| #333 查核責任分類 | 上游關係:那張卡管回報者有沒有自己量過,本卡管量過的值該不該寫進給別人看的文字。一個值可以來源真實、記錄誠實,而寫出來仍然有害。 |
| #317 已經記錄過的失效仍然重演 | caveat 為什麼弱的機制在那張卡上:一份記錄要生效,讀的人得先有理由打開它。照抄的人不會經過 caveat 所在的位置。 |
| #341 讀者定位擋住科普化的同一句話,供應了省略解釋的理由 | 反向的一對:那張卡管該寫而沒寫(省略在產物上沒有痕跡),本卡管不該寫而寫了(寫出來在產物上完全正常)。兩者的共同點是產物看不出來。 |
| #360 示範指令的引數要說明 | 互補的一對:本卡管不該寫的值寫了(讀者照抄一個關於別人機器的答案),那張管該寫的值寫了而沒說它是什麼(讀者照抄一個他其實要換的位置)。兩張共用同一個判別動作——讀者拿這一句去用,他是去查自己的系統還是直接照抄。 |
docs/rules/writing.md〈不預設讀者熟悉特定專案〉(舊版的原則五)「避免專案綁定敘事」 | 失效方向相反,詳見本卡的對照表。〈不預設讀者熟悉特定專案〉的失效讀者當場知道,本卡的失效讀者永遠不會知道是文章害的。 |
判讀徵兆
| 訊號 | 該做的事 |
|---|---|
| 想在句子後面補一句「未經驗證」 | 先問這一句拿掉之後論證還在不在,在就拿掉,不用標註 |
| 待辦寫著「需先實機確認」 | 拆成形狀與具體答案兩半,前一半現在就寫、後一半不寫 |
| 文中出現一個真實裝置或環境的識別值 | 問它服務的是機制的說明還是查詢的結果,說明用的換佔位值、查詢結果刪 |
| 一段話回答的是「有一台是什麼」 | 讀者要的是「我這台是什麼」,改寫成他自己查得到的形式 |
| 引用來源可靠、值也正確,仍覺得哪裡不對 | 危害與正確性無關——問這個值是不是關於讀者的系統 |
核心:每台機器上都一樣的那些讀者不必查,而他必須查的正好是文章不該替他回答的。