如何讓開發(fā)明白,空≠0?

9 評論 3194 瀏覽 28 收藏 9 分鐘

“空”和“0”在賦值上有完全不同的適用范圍,在一開始,產(chǎn)品端應(yīng)該格外注意字段的限制,能夠提高產(chǎn)品開發(fā)效率。

作為一個(gè)產(chǎn)品經(jīng)理,從來不會把“空”等同于“0”來看待,在寫原型的時(shí)候也不會特意強(qiáng)調(diào),這是“空”,不是“0”。

兩個(gè)毫不相關(guān)的東西,為什么要去解釋一遍無關(guān)性呢?就好比人和狗,為什么要去說明人不是狗,狗不是人?

直到產(chǎn)品驗(yàn)收時(shí),看到了那些0……

讓產(chǎn)品抓狂的0

案例1:月經(jīng)生育史

先來看個(gè)月經(jīng)史、生育史的例子。

醫(yī)生還未寫病歷,這些“0”就已經(jīng)默認(rèn)寫上了,這也就罷了,一個(gè)個(gè)刪除,然后保存;回頭一看,“0”全都出來了。

一下子崩潰了,問開發(fā):初潮0歲,你見過生下來就來大姨媽的嗎?月經(jīng)周期0天,你見過365天,天天來大姨媽的嗎?

開發(fā)小哥很委屈:我又不懂這些是什么意思。

想想這好像也不能怪他們,畢竟還是單身。

案例2:預(yù)約次數(shù)限制

這是微信預(yù)約的限制,用來限制每個(gè)微信id一天可預(yù)約的次數(shù)。

當(dāng)我打開設(shè)置時(shí),發(fā)現(xiàn)默認(rèn)值就是0,刪了保存還是0。這應(yīng)該有常識了吧,問開發(fā):所有人都不能預(yù)約,那預(yù)約功能的意義在哪?我要的是“空”,不是“0”。

開發(fā)小哥哥又委屈了:數(shù)據(jù)庫又不能存空,空就是0啊。

也確實(shí)是難為他們了,一方說我要空,一方又不讓為空。

案例3:積分規(guī)則設(shè)置

做過電商的朋友對積分都不陌生,消費(fèi)后贈送積分,再次消費(fèi)時(shí)抵扣積分。

當(dāng)我打開頁面設(shè)置時(shí),也是滿眼的0。問開發(fā):都是0,設(shè)置和不設(shè)置有什么區(qū)別?這功能都沒有用。

這回開發(fā)小哥哥有理了:既然“空”和“0”沒影響業(yè)務(wù),顯示著也沒問題啊。

好像挺有道理,怎么就隱隱透著些傻氣呢。

開發(fā)怎么看“空”

產(chǎn)品經(jīng)理眼里的“空”,怎么就成了開發(fā)眼里的“0”了呢?但是,也不是所有的空,都顯示成了“0”啊,比如填寫聯(lián)系人和聯(lián)系電話的地方,都沒有顯示0。

為此,我去采訪了一下開發(fā)小哥哥,發(fā)現(xiàn)了其中的原因。

每一個(gè)字段都是有一個(gè)類型的,常用的是:

  1. 字符型數(shù)據(jù):包括中文字符、英文字符、數(shù)字字符和其他ASCⅡ字符。就像上面的聯(lián)系人就是這種文本類型,可以輸入中文姓名。數(shù)據(jù)庫默認(rèn)值就是空字符串,即“”。
  2. 數(shù)值型數(shù)據(jù):只可由數(shù)字、小數(shù)點(diǎn)、正負(fù)號和表示乘冪的字母E組成,不能輸入中英文字符。就像上面的經(jīng)期就是這種數(shù)值類型。數(shù)據(jù)庫不能存空,必須存入一個(gè)確定的值,故開發(fā)常常把空存成0。

既然字符型數(shù)據(jù)能支持?jǐn)?shù)字,為什么不都存成字符型數(shù)據(jù)呢?不就沒有0的那個(gè)問題了嗎?

從開發(fā)角度來說,原因有好多,說個(gè)我們比較關(guān)注的:字符類型往往比數(shù)字類型占用更多的存儲,而更多的存儲空間消耗會導(dǎo)致查詢性能變慢,就是系統(tǒng)很卡。

為了使有限的存儲空間發(fā)揮最大的能效,我們有必要把字符類型和數(shù)值類型分開,那怎么做才能讓開發(fā)不直接把空當(dāng)0呢?

讓開發(fā)分清空和0的法則

明確數(shù)據(jù)類型

產(chǎn)品經(jīng)理是最熟悉業(yè)務(wù)的,每個(gè)字段可能填寫什么內(nèi)容,都會有一個(gè)深入的理解。那在寫原型的時(shí)候,就需要針對每個(gè)字段可填寫內(nèi)容的類型做個(gè)明確的標(biāo)識,哪些是文本,哪些是數(shù)值。

比如說上面的字段:

這樣至少能保證文本類型的地方不會出現(xiàn)0,下面重點(diǎn)關(guān)注數(shù)值類型就可以了。

明確數(shù)值范圍

我們會發(fā)現(xiàn),有的地方空=0是沒有問題的,比如說初潮,因?yàn)?不在數(shù)據(jù)范圍內(nèi),數(shù)據(jù)庫存了0前端不顯示出來就可以了,不會引起誤解。

但有的地方空=0就會發(fā)生錯(cuò)誤,比如說生育史里面的足月產(chǎn),意思是足月生育了幾個(gè)孩子,那填寫0是完全合理的;如果空就是0,那填了0也會被認(rèn)為是空。

我們可以給每個(gè)數(shù)值一個(gè)范圍,這樣開發(fā)在賦值的時(shí)候,就知道哪些值不能用了。

比如上面的字段:

明確空的定義

空其實(shí)是有很大的想象空間的,有時(shí)候代表無限大。比如說預(yù)約次數(shù)的顯示,不填就是不限制預(yù)約次數(shù),任意次都可以。

有時(shí)候代表未知。比如說足月產(chǎn),你沒法知道這個(gè)人到底生了幾個(gè)孩子,不能隨便給一個(gè)值。數(shù)據(jù)庫需要給這個(gè)未知賦一個(gè)值,但肯定不能是0了。這空值也不能保存進(jìn)去,在其他相關(guān)的地方顯示出來。

有時(shí)候就代表0。就像積分累積規(guī)則,0就代表沒有積分活動。

空具體的值不需要我們定義,但我們需要告訴開發(fā)這個(gè)空值的含義是什么。

比如說上面的字段:

可以和開發(fā)約定一個(gè)整體的規(guī)則,“空”=999999,999999是系統(tǒng)里面肯定不會出現(xiàn)的正常業(yè)務(wù)數(shù)據(jù),用這個(gè)代替不會出現(xiàn)像0那樣的異議。

當(dāng)然,一些特殊的字段,還需要單獨(dú)去處理,比如說預(yù)約次數(shù)限制,最大值就是999,空只能代表最大的999。

明確空回顯內(nèi)容

最后要和開發(fā)強(qiáng)調(diào)一點(diǎn):不管哪個(gè)功能下的“空”,不管“空”的含義是什么,也不管給“空”賦了什么值;既然是空,頁面上千萬別回顯出內(nèi)容來,千萬不要隨處可見的“0”。

我們要的就是空!

總結(jié)

空和0的問題,是產(chǎn)品很容易忽視的問題,卻是很容易和開發(fā)引起爭執(zhí)的問題。

我們在寫需求文檔的時(shí)候,需要格外注意數(shù)值型字段的取值范圍和空值含義。提前告知開發(fā),就能避免很多數(shù)據(jù)錯(cuò)誤的情況,提高產(chǎn)品開發(fā)質(zhì)量。

 

本文由 @辰陽 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自 Unsplash,基于 CC0 協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 開發(fā)有時(shí),為了省事確實(shí)會這樣做。然影響又不大,不好說什么….

    來自湖北 回復(fù)
  2. 直接說空就是空,不能展示0,不就ok了嗎

    回復(fù)
  3. 太基礎(chǔ)了,字段數(shù)據(jù)類型和默認(rèn)值定義清楚是基本功

    回復(fù)
  4. 空即是色

    回復(fù)
  5. 笑出聲??

    回復(fù)
  6. 深有感觸

    回復(fù)
  7. 開發(fā)不明白?其實(shí)都是裝死而已,空和0的含義開發(fā)比你都清楚

    回復(fù)
  8. 回復(fù)
  9. 數(shù)值型類型為空可以用null,””和null的定義是不一樣的為什么非要用0代替?

    來自山東 回復(fù)