存QQ號(hào)碼,究竟該用int類(lèi)型還是string類(lèi)型?
大家好,我是了不起。
QQ號(hào)相信現(xiàn)在玩互聯(lián)網(wǎng)的基本上人人都有。大多數(shù)人應(yīng)該玩過(guò)這個(gè)游戲吧,“今天是馬化騰的生日,轉(zhuǎn)發(fā)這條消息到五個(gè)群,你的QQ等級(jí)就會(huì)多一個(gè)太陽(yáng)。”
看到這里你也許會(huì)心一笑,多少年前的老把戲了,還想騙我?但是當(dāng)初人人想提高QQ等級(jí)的年代,應(yīng)該不少人被騙過(guò)。
今天了不起不和大家議舊,而是和大家聊一個(gè)一直以來(lái)爭(zhēng)議很大的問(wèn)題——存QQ號(hào)碼,究竟該用int類(lèi)型還是string類(lèi)型?
圖片
1、QQ歷史
QQ,最早的名字是OICQ(Open ICQ),于1999年2月推出。彼時(shí),QQ號(hào)的分配還顯得非常稀缺且珍貴,最早的QQ號(hào)是五位數(shù)或六位數(shù)。
由于那個(gè)時(shí)代的互聯(lián)網(wǎng)用戶(hù)基數(shù)較小,能夠擁有一個(gè)五六位數(shù)的QQ號(hào)在當(dāng)時(shí)幾乎是一種“身份的象征”。
事實(shí)上,這些早期的QQ靚號(hào),現(xiàn)在在網(wǎng)上有專(zhuān)門(mén)的售賣(mài)產(chǎn)業(yè)。
后來(lái)隨著QQ的普及,越來(lái)越多的用戶(hù)開(kāi)始涌入這個(gè)社交平臺(tái),然后QQ號(hào)長(zhǎng)度開(kāi)始變長(zhǎng),七位,八位,到現(xiàn)在的十一位。
圖片
2、選擇 int 還是字符串?
先看騰訊內(nèi)部人員的回答:
圖片
答案很明顯了,他們最先開(kāi)始是用的 int32,后面遷移到 int64 了。
但是這樣設(shè)計(jì)是合理的么?
如果早期程序員設(shè)計(jì)過(guò)身份證號(hào)存儲(chǔ)的人,應(yīng)該都吃過(guò)虧。
因?yàn)樽铋_(kāi)始身份證號(hào)用 bigint 存就可以,后來(lái)身份證多出了一個(gè) X,然后......
所以,如果讓我來(lái)主導(dǎo)QQ設(shè)計(jì)的話(huà),我會(huì)選擇 string。
無(wú)它,能滿(mǎn)足多樣化的用戶(hù)需求,不僅僅是長(zhǎng)度,如果后期需要帶有特殊符號(hào)或其它國(guó)家的手機(jī)號(hào),那么 string 是一個(gè)更為穩(wěn)妥的選擇。用 string 可以確保無(wú)論用戶(hù)輸入什么形式的號(hào)碼,你的程序都能正確處理并保存。
即使int節(jié)約內(nèi)存,查詢(xún)速度快,但是一旦有需求變更,就會(huì)很難受。