如何讓開發(fā)明白,空≠0?
“空”和“0”在賦值上有完全不同的適用范圍,在一開始,產品端應該格外注意字段的限制,能夠提高產品開發(fā)效率。
作為一個產品經理,從來不會把“空”等同于“0”來看待,在寫原型的時候也不會特意強調,這是“空”,不是“0”。
兩個毫不相關的東西,為什么要去解釋一遍無關性呢?就好比人和狗,為什么要去說明人不是狗,狗不是人?
直到產品驗收時,看到了那些0……
讓產品抓狂的0
案例1:月經生育史
先來看個月經史、生育史的例子。
醫(yī)生還未寫病歷,這些“0”就已經默認寫上了,這也就罷了,一個個刪除,然后保存;回頭一看,“0”全都出來了。
一下子崩潰了,問開發(fā):初潮0歲,你見過生下來就來大姨媽的嗎?月經周期0天,你見過365天,天天來大姨媽的嗎?
開發(fā)小哥很委屈:我又不懂這些是什么意思。
想想這好像也不能怪他們,畢竟還是單身。
案例2:預約次數限制
這是微信預約的限制,用來限制每個微信id一天可預約的次數。
當我打開設置時,發(fā)現(xiàn)默認值就是0,刪了保存還是0。這應該有常識了吧,問開發(fā):所有人都不能預約,那預約功能的意義在哪?我要的是“空”,不是“0”。
開發(fā)小哥哥又委屈了:數據庫又不能存空,空就是0啊。
也確實是難為他們了,一方說我要空,一方又不讓為空。
案例3:積分規(guī)則設置
做過電商的朋友對積分都不陌生,消費后贈送積分,再次消費時抵扣積分。
當我打開頁面設置時,也是滿眼的0。問開發(fā):都是0,設置和不設置有什么區(qū)別?這功能都沒有用。
這回開發(fā)小哥哥有理了:既然“空”和“0”沒影響業(yè)務,顯示著也沒問題啊。
好像挺有道理,怎么就隱隱透著些傻氣呢。
開發(fā)怎么看“空”
產品經理眼里的“空”,怎么就成了開發(fā)眼里的“0”了呢?但是,也不是所有的空,都顯示成了“0”啊,比如填寫聯(lián)系人和聯(lián)系電話的地方,都沒有顯示0。
為此,我去采訪了一下開發(fā)小哥哥,發(fā)現(xiàn)了其中的原因。
每一個字段都是有一個類型的,常用的是:
- 字符型數據:包括中文字符、英文字符、數字字符和其他ASCⅡ字符。就像上面的聯(lián)系人就是這種文本類型,可以輸入中文姓名。數據庫默認值就是空字符串,即“”。
- 數值型數據:只可由數字、小數點、正負號和表示乘冪的字母E組成,不能輸入中英文字符。就像上面的經期就是這種數值類型。數據庫不能存空,必須存入一個確定的值,故開發(fā)常常把空存成0。
既然字符型數據能支持數字,為什么不都存成字符型數據呢?不就沒有0的那個問題了嗎?
從開發(fā)角度來說,原因有好多,說個我們比較關注的:字符類型往往比數字類型占用更多的存儲,而更多的存儲空間消耗會導致查詢性能變慢,就是系統(tǒng)很卡。
為了使有限的存儲空間發(fā)揮最大的能效,我們有必要把字符類型和數值類型分開,那怎么做才能讓開發(fā)不直接把空當0呢?
讓開發(fā)分清空和0的法則
明確數據類型
產品經理是最熟悉業(yè)務的,每個字段可能填寫什么內容,都會有一個深入的理解。那在寫原型的時候,就需要針對每個字段可填寫內容的類型做個明確的標識,哪些是文本,哪些是數值。
比如說上面的字段:
這樣至少能保證文本類型的地方不會出現(xiàn)0,下面重點關注數值類型就可以了。
明確數值范圍
我們會發(fā)現(xiàn),有的地方空=0是沒有問題的,比如說初潮,因為0不在數據范圍內,數據庫存了0前端不顯示出來就可以了,不會引起誤解。
但有的地方空=0就會發(fā)生錯誤,比如說生育史里面的足月產,意思是足月生育了幾個孩子,那填寫0是完全合理的;如果空就是0,那填了0也會被認為是空。
我們可以給每個數值一個范圍,這樣開發(fā)在賦值的時候,就知道哪些值不能用了。
比如上面的字段:
明確空的定義
空其實是有很大的想象空間的,有時候代表無限大。比如說預約次數的顯示,不填就是不限制預約次數,任意次都可以。
有時候代表未知。比如說足月產,你沒法知道這個人到底生了幾個孩子,不能隨便給一個值。數據庫需要給這個未知賦一個值,但肯定不能是0了。這空值也不能保存進去,在其他相關的地方顯示出來。
有時候就代表0。就像積分累積規(guī)則,0就代表沒有積分活動。
空具體的值不需要我們定義,但我們需要告訴開發(fā)這個空值的含義是什么。
比如說上面的字段:
可以和開發(fā)約定一個整體的規(guī)則,“空”=999999,999999是系統(tǒng)里面肯定不會出現(xiàn)的正常業(yè)務數據,用這個代替不會出現(xiàn)像0那樣的異議。
當然,一些特殊的字段,還需要單獨去處理,比如說預約次數限制,最大值就是999,空只能代表最大的999。
明確空回顯內容
最后要和開發(fā)強調一點:不管哪個功能下的“空”,不管“空”的含義是什么,也不管給“空”賦了什么值;既然是空,頁面上千萬別回顯出內容來,千萬不要隨處可見的“0”。
我們要的就是空!
總結
空和0的問題,是產品很容易忽視的問題,卻是很容易和開發(fā)引起爭執(zhí)的問題。
我們在寫需求文檔的時候,需要格外注意數值型字段的取值范圍和空值含義。提前告知開發(fā),就能避免很多數據錯誤的情況,提高產品開發(fā)質量。
本文由 @辰陽 原創(chuàng)發(fā)布于人人都是產品經理。未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協(xié)議
開發(fā)有時,為了省事確實會這樣做。然影響又不大,不好說什么….
直接說空就是空,不能展示0,不就ok了嗎
太基礎了,字段數據類型和默認值定義清楚是基本功
空即是色
笑出聲??
深有感觸
開發(fā)不明白?其實都是裝死而已,空和0的含義開發(fā)比你都清楚
帥
數值型類型為空可以用null,””和null的定義是不一樣的為什么非要用0代替?