天貓登陸(天貓登陸**)
前沿拓展:
天貓登陸
?百度搜天貓
對(duì)于程序員來(lái)說(shuō),bug很討厭。每天重復(fù)著寫(xiě)代碼、找bug、修改bug的動(dòng)作。按理說(shuō)互聯(lián)網(wǎng)巨頭的產(chǎn)品,bug應(yīng)該比較少。但是實(shí)際上,無(wú)論是用百度、天貓、谷歌等產(chǎn)品,經(jīng)常都會(huì)出現(xiàn)這些低級(jí)的bug,讓人很火大。這不,有個(gè)網(wǎng)友就在網(wǎng)上吐槽:
這個(gè)網(wǎng)友稱,騰訊QQ空間好友的動(dòng)態(tài)里,經(jīng)常沒(méi)辦法顯示好友的備注名稱。安卓客戶端的同個(gè)頁(yè)面,可以打卡很多次,這樣導(dǎo)致的后果就是,返回的時(shí)候要按很多次的返回鍵。不僅如此,天貓登錄界面在firefox下的兼容性很差。例如說(shuō),明明沒(méi)有顯示出來(lái)驗(yàn)證碼,卻要求登錄用戶輸入驗(yàn)證碼。
還有在google云端硬盤(pán)上傳文件夾,結(jié)果是亂碼。
關(guān)于網(wǎng)友提出的這個(gè)問(wèn)題,大家深有感觸。但是很多網(wǎng)友還是覺(jué)得,程序員混口飯吃不容易,莫要再截圖打兄弟們的臉了。
網(wǎng)友一:
巨頭的系統(tǒng)都很龐大,產(chǎn)品組的同事每提一個(gè)bug,程序員要先去重現(xiàn)bug重現(xiàn),然后看它跑的哪幾行代碼,再去改代碼。這時(shí)本地開(kāi)發(fā)算是完成,也通過(guò)測(cè)試,可以提交到團(tuán)隊(duì)的測(cè)試環(huán)境了。但是有時(shí)候,好幾個(gè)bug背后的代碼相互依賴,可能你的同事 merge 的時(shí)候把你的代碼沖掉了,或者在中間插入了其他的代碼,然后又要想辦法重新改,或者說(shuō)產(chǎn)生了新bug。
網(wǎng)友二:畢竟互聯(lián)網(wǎng)才發(fā)展了這么些年,還很不完善。
網(wǎng)友三:沒(méi)有百分百的測(cè)試覆蓋率,只要是人寫(xiě)出來(lái)的程序,做出來(lái)的產(chǎn)品,就會(huì)有bug。無(wú)須大驚小怪。
網(wǎng)友四:無(wú)論什么公司的產(chǎn)品都不可避免有一些bug,互聯(lián)網(wǎng)巨頭也無(wú)法例外而且還有可能更多。
網(wǎng)友五:有人的地方,就有江湖,和BUG。
看來(lái)大家對(duì)待bug,態(tài)度還是很寬容的。其實(shí)也是,再好的程序,可能也會(huì)出現(xiàn)代碼,更何況互聯(lián)網(wǎng)巨頭這些擁有龐大系統(tǒng)的代碼庫(kù)。下面,有個(gè)網(wǎng)友分享了一個(gè),據(jù)說(shuō)是最大的bug。
Azure底層fabric有過(guò)這么一段code,目的是在做創(chuàng)建一張新的證書(shū)并設(shè)置有效期為一年后這件事。
那么要先獲得一年后的日期,本來(lái)用DateTime.Today().Add(new TimeSpan(365,0,0,0))就可以了(編輯:經(jīng)提醒,AddYear(1)是最簡(jiǎn)單而且更精確的)。寫(xiě)代碼的哥們腦洞了下寫(xiě)成new DateTime(today.Year+1,today.Month,today.Day)。經(jīng)過(guò)各種測(cè)試運(yùn)行一直都沒(méi)問(wèn)題。直到2012年2月29日,ArgumentOutOfRangeException。后果是整個(gè)Azure掛了十多個(gè)小時(shí)吧。
雖然說(shuō)bug不可避免,但是寫(xiě)代碼時(shí),最好還是盡量減少bug,下面分享幾個(gè)方法。
1.寫(xiě)代碼時(shí)不要分心,缺陷代碼頭號(hào)敵人就是分心。有些時(shí)候,一個(gè)Twitter或GTalk都會(huì)將你的思路打斷,這時(shí)候你需要集中注意力。
2.集成測(cè)試或者單元測(cè)試模塊,寫(xiě)代碼一定要遵循測(cè)試、代碼、測(cè)試的原理。
3.如果代碼庫(kù)已經(jīng)測(cè)試好,是很多開(kāi)發(fā)者都使用過(guò)的,經(jīng)過(guò)很多次測(cè)試的,而且你又打算實(shí)現(xiàn)這個(gè)代碼庫(kù)同樣功能,這時(shí)候,你可以盡情的使用這些代碼。
4.編譯器的警告,千萬(wàn)不能忽視。通常情況下,編譯器很容易將代碼中存在的bug識(shí)別出來(lái)。對(duì)代碼進(jìn)行調(diào)試之前,最好是使用最高級(jí)別的警告,來(lái)編譯代碼,看看有沒(méi)有明顯的錯(cuò)誤存在。
5.日志:日志工具安裝很方便,它可以把日志分為info、warning、error三大類(lèi)型。而通過(guò)這些日志,你很快就可以**到到底發(fā)生什么。
6.代碼審查:提交代碼時(shí),最好讓別人審查一下你的代碼,以此看看有沒(méi)有錯(cuò)誤出現(xiàn)。
其實(shí)出現(xiàn)bug,算是很正常的一件事,程序員相信都不敢很絕對(duì)的說(shuō)自己寫(xiě)的代碼不會(huì)出錯(cuò),當(dāng)然,谷歌技術(shù)大牛Jeff Dean除外,因?yàn)樗?hào)稱自己的代碼從來(lái)不會(huì)出錯(cuò)。但是作為程序員,還是盡量避免出現(xiàn)bug。
學(xué)編程技術(shù),就到W3Cschool,如果你喜歡我們的文章,可以點(diǎn)擊右上角關(guān)注我們;如果你想看到更多IT界的資訊,可以加我們的公眾號(hào)。
公眾號(hào):w3cschoolcn
拓展知識(shí):
原創(chuàng)文章,作者:九賢互聯(lián)網(wǎng)實(shí)用分享網(wǎng)編輯,如若轉(zhuǎn)載,請(qǐng)注明出處:http://www.uuuxu.com/20220813464353.html