程序出現(xiàn)bug是必然出現(xiàn)的情況,還是程序員水平有限?還有一個(gè)原因就是你永遠(yuǎn)不知道你的用戶會(huì)有什么傻屌輸入。比如說(shuō)電影買(mǎi)票吧。很簡(jiǎn)單吧,我們正常人就是幾個(gè)人買(mǎi)幾張票,然后在選個(gè)什么爆米花套餐??墒蔷陀腥?/p>
程序出現(xiàn)bug是必然出現(xiàn)的情況,還是程序員水平有限?
還有一個(gè)原因就是你永遠(yuǎn)不知道你的用戶會(huì)有什么傻屌輸入。比如說(shuō)電影買(mǎi)票吧。很簡(jiǎn)單吧,我們正常人就是幾個(gè)人買(mǎi)幾張票,然后在選個(gè)什么爆米花套餐??墒蔷陀腥耍簛?lái)給我稱三斤豬肉。程序員萬(wàn)萬(wàn)不會(huì)想到有人會(huì)來(lái)電影院買(mǎi)豬肉的。于是趕快加一個(gè)限制:這里只能賣電影票。又有一個(gè)客戶:給我來(lái)1.53張電影票。程序員也不會(huì)想到會(huì)有人來(lái)這樣買(mǎi),畢竟都是買(mǎi)整張,于是再加限制:購(gòu)買(mǎi)數(shù)量只能是整數(shù)。下一個(gè)客戶:給我來(lái)-3張票,程序員還是低估了客戶的創(chuàng)造力。于是再加限制:訂票數(shù)量必須為正整數(shù)。這下沒(méi)問(wèn)題了吧,不,下一個(gè)客戶:給我來(lái)三千張電影票。程序員也不會(huì)想到,一個(gè)電影廳總數(shù)都沒(méi)有三千個(gè)座位。于是趕快限制:購(gòu)買(mǎi)數(shù)量不能超過(guò)放映廳剩余座位數(shù)。這會(huì)總算沒(méi)問(wèn)題了吧,不,有個(gè)客戶說(shuō):我買(mǎi)全部座位,然后他再電影院門(mén)口加價(jià)倒賣。程序員:這回不是我程序問(wèn)題了吧。老板:那老子賺個(gè)毛,改版本,限制一個(gè)賬戶最多只能買(mǎi)十張。改完終于沒(méi)有問(wèn)題了吧。不,下一個(gè)客戶:給我來(lái)一張1983年1月21日晚上十九點(diǎn)二十八的那場(chǎng)電影票。程序員:臥槽?這也行?于是趕快限制:購(gòu)買(mǎi)場(chǎng)次的時(shí)間必須在現(xiàn)在時(shí)間以后。對(duì),還得先想一步,不能也不能買(mǎi)三個(gè)月以后的。這次又成功堵住了一個(gè)潛在的漏洞。你以為這就完了?還是太天真,這是又來(lái)一個(gè)客戶:給我來(lái)一張電影票,算了,我不買(mǎi)了。給我來(lái)一張電影票,算了我不買(mǎi)了。給我來(lái)一張電影票,算了我不買(mǎi)了.......給我來(lái)一System.OutOfMemoryException.....程序員:這不行呀,這又不買(mǎi),又這樣占著位置,后邊人買(mǎi)不成呀。于是趕快加限制:如果三分鐘沒(méi)有操作成功則自動(dòng)退出,并且添加賬號(hào)和ip的限制。你以為會(huì)完,這時(shí)候有客戶:我要一張電影票,我要一張電影票,我要一張電影票,我要一張電影票。給你錢(qián),給你錢(qián),給你錢(qián),給你錢(qián)。付款成功,付款成功,付款成功。第二天客戶投訴:臥槽我就買(mǎi)了一張票,怎么扣了四張票錢(qián)。然后退錢(qián)。然后老板覺(jué)得這是開(kāi)發(fā)的責(zé)任,于是這部分損失由程序員來(lái)承擔(dān)。程序員趕快加限制:防止重復(fù)提交。你以為這就完了?這時(shí)又來(lái)了一個(gè)客System.OutOfMemoryException