並排多種做法時,比較的軸要落在讀者接下來要交出的那份產出上
一個題目有多種做法時,教材的責任是把它們並排。並排的那張表有幾欄,每一欄就是一條軸,而軸決定了讀者讀完帶走什麼。
軸的來源有兩個。一個是那幾種做法彼此的差異——它們回的列數不同、花的時間不同、取得到的欄位不同。另一個是讀者讀完之後要交出的那份產出——他手上正在設計的表、正在定的介面、正在選的型別。
第一種來源寫出來的每一欄都正確、都可以實測、每一句都有主詞,而讀者讀完不知道自己該怎麼辦,因為他要動手改的那份產出不在任何一欄裡。
失效的形態
軸取自做法的內部差異
一個 SQL 教學分類裡,同一族問題的三處比較各有各的軸:一處比三種寫法回的列數與取得到的欄位,一處比三種寫法在有無索引下的毫秒數,一處比要輸出自己那一列還是對方那一列。
三條軸都對,都有實測支撐,而三條軸的主詞都是寫法。讀者要交的是一張表的設計,它在三條軸上一次都沒有出現。
「這個做法假設了什麼」看起來換了主詞,而主詞沒有換
把軸寫成「這個解法對資料押了什麼注、注賠掉的時候會怎樣」是一次真實的改進——它從做法的外觀移到做法的前提。而主詞還是做法:問的仍然是這個解法假設了什麼,不是讀者要不要讓那個假設成立。
主詞換過來之後,同一件事的問法是這樣:我要設計這張表,日期這一欄要不要唯一、允不允許缺、用哪一種型別存。而那一個決定同時決定了三種做法各自成不成立——唯一與否決定配對會不會膨脹,允不允許缺決定「排序相鄰」等不等於「時間相鄰」,型別決定跨引擎的日期運算寫不寫得出來。
判別的動作是找出本篇在比較什麼,把比較的項目逐條唸出來,問主詞是誰。主詞是做法,軸在做法之間;主詞是讀者正在設計的那份產出,軸在他的決定上。
判別不綁在表格上。 一篇把三種做法排成散文、各給一節的文章,缺陷完整存在而沒有一欄可以唸——一次實測:指名為本卡證據的三處比較裡有兩處零個表格,照「逐欄唸標題」走會在入口就判不適用而放行。所以入口問的是比較的項目,不是欄。
零件齊全,而沒有一處並排
同一族的四種做法各自有完整的機制說明,分別住在四篇裡;代價量在第五篇,而那一篇用的是另一道題。每一篇單獨看都完整、都交付了它那一種的機制。
取捨只有在並排的時候才存在。 分開寫的時候,每一篇交付的是一種做法,沒有一篇交付取捨,而取捨正是讀者要的。連結不產生並排:連過去看到的仍然是一次一種。
為什麼既有的檢查掃不到
每一處比較單獨看都成立。句子的四個槽位填滿了,判斷標準到了條件層,數字有實測,冷讀讀得懂,事實查核通過。
缺一條軸的判斷標準對這一類沉默:那裡的先兆是分支數少於正文自己列出的種類數,而這裡軸的數量完全對得上,種類幾種就比了幾種。錯的是整組軸所在的平面,不是軸的數量。
軸名取了次好的代理也不是這一種:那裡機制想對了而名字取偏,這裡名字與機制都對,錯在這組機制不是讀者要決定的那件事。
抓得到它的只有一個問題:讀者讀完這張表,他接下來會去改什麼。
判讀方式
逐欄唸出標題,問讀者讀完之後動手改的是哪一份產出:
| 讀完之後他改的 | 這一欄的軸落在 | 處置 |
|---|---|---|
| 這段文字本身(換一種寫法) | 做法之間 | 降為格內的內容,不當欄 |
| 他正在設計的那份產出(結構、型別、約束、介面) | 他的決定 | 留作欄,並排在前面 |
兩種都寫得出來的時候,落在他的決定上那一種排在前面,做法之間的差異是它的材料——先知道自己要把邊界畫在哪,才輪到問畫定之後哪一種寫法便宜。
觸發條件是讀者遇到這個題目的時候真正要交出的是哪一份產出,不是這篇有幾種做法。同一批材料對兩種讀者要排成不同的軸:以練習為目的的讀者交出一段程式,以工作為目的的讀者交出一份設計,而以工作為目的的讀者是教材多數時候的讀者。
修法
先寫下讀者要交出的那份產出,再從它往回列軸。 而那份產出不是作者當下猜的——來源是本篇所屬集合已經宣告的定位(一次實測的取值就是這樣來的:分類開宗明義寫著它處理的是設計而不是語法表)。宣告裡讀不出來的時候,把「讀不出來」記下來、不要代填——代填的成本是零,所以那是這條判斷標準最可能的失效方式。 「他要交一張表的設計」往回列,得到的是唯一性、可空性、型別、索引這幾條;「他要交一段查詢」往回列,得到的才是列數與毫秒。
原本的軸不刪,降級成格內的內容。 毫秒數與列數是判斷的材料,它們不會因為換了欄位配置而失效;換掉的是哪一項當欄、哪一項當格。
跨篇的零件要在某一處並排,而那一處是新的內容。 各篇之間互相連結不產生並排,因為讀者一次仍然只看得到一種。並排的那一段屬於內容壓力的就地展開,不屬於換成連結那個出口。
論述基礎與限制
證據是單一分類、單次判定。 「三處既有的比較分別以列數、毫秒與輸出對象為軸」是站內可查的觀測,而「軸取自做法的內部差異」是不是跨領域的高頻形態,本卡沒有量過。
「以工作為目的的讀者是教材多數時候的讀者」沒有支撐。 而觸發條件(讀者真正要交出的是哪一份產出)實際上靠這一句落地,所以那個判定目前是作者的預設而不是量測結果。套到別的內容集合時要自己先答這一題。
「取捨只有在並排的時候才存在」是定義性的主張,不是觀測。 文中材料支持的是較弱的那一半:分開寫的時候每一篇交付的是一種做法。
判讀表接不住三種形態裡的第三種。 「零件齊全而沒有一處並排」的情形根本沒有一張表可以逐欄唸,所以那一種只由修法段接住,判讀程序在入口就不適用。
適用邊界要由引用本卡的規範寫出來。 本卡出自單一分類的一次判定,引用它的位置要各自寫明在那個場景下它涵蓋到哪裡。
跟其他抽象層原則的關係
- #319 判斷標準少一條獨立的軸——那裡軸的數量少了,這裡數量對而平面錯;兩者的共同點是逐項檢查全部通過,分辨方式是數分支與種類對不對得上,對得上就查平面。
- #257 軸名取了次好的代理變數——那裡機制對而名字偏,這裡名字與機制都對而選錯了要比的那件事。三者構成軸的三種失效:少了、名字偏了、選在別的平面上。
- #214 解法排序依情境適用、不依作者採用順序——那裡管幾種做法怎麼排序,這裡管拿什麼去排;先有軸才有順序,軸選在做法之間的時候,排序再公正也排不出讀者要的那一份。
- #209 知識目標決定文章結構——那裡問讀者帶走的是判斷力還是操作步驟,這裡問那份判斷力施加在哪一個對象上。判斷力的對象是讀者要交出的那份產出,不是文章裡的寫法。
- #262 內容壓力的出口是擴充結構——並排那一段是就地展開,而它最容易被當成「這幾篇互相連結就夠了」而走進換成連結那個出口。
Case
一個 SQL 教學分類,21 篇正文。分類開宗明義寫著它處理的是設計而不是語法表,而同一族問題的四種做法分散在四篇、代價量在第五篇且用的是另一道題,沒有任何一處把它們並排。
三處既有的比較分別以列數、毫秒與輸出對象為軸,三條的主詞都是寫法。讀者實際要做的決定——這張表的日期欄要不要唯一、允不允許缺——同時決定那四種做法各自成不成立,而它在三條軸上都不存在。
判定由使用者給出:題目只是練習的方向,讀者最終要交的是一份資料庫設計,所以要比的是現實中設計資料表的時候邊界該怎麼畫,而各種做法押了什麼假設只是它的材料。
這張卡立起來之後,同一批新寫的一篇把三種做法並排了,而軸的平面沒有換。 那一篇的兩張表,欄位分別是「版本/回幾筆/方向」與「寫法/沒有索引/有索引/答案」——四條軸的主詞仍然全部是做法,而讀者要下的那個決定(那一組鍵唯不唯一)寫在一段散文裡、接著換成連結指向設計側的那一篇。也就是說三種失效形態裡「沒有一處並排」那一種修掉了,而「軸取自做法的內部差異」那一種沒有。這一組落差本身是本卡最好的實例:並排是看得見的動作,換平面不是,所以前者會先被做掉。