越自信,Bug 越多
大家好,我是魚皮。
標題是說給自己聽的,最近,又因為我的自信,搞出了一個影響項目正常運行的 Bug。
事情是這樣的,最近在搞一個新項目,之前基本都是我和另外一個前端朋友在開發(fā)。后來呢,我又拉了幾位朋友加入進來,結果他們都反饋說代碼在本地裝不上依賴,導致運行不起來。
于是,有一位朋友就修改了項目中某一個依賴的版本號,然后依賴就安裝成功了。結果運行項目時,出現(xiàn)了報錯:試圖從 undefined 未定義變量中獲取屬性。

代碼如下:
//?e.props?可能為?undefined
e.props.searchValue
這種錯誤其實是很低級的,有點類似 Java 中的 NPE(空指針異常)。于是估計這位朋友也是和我一樣的心態(tài),覺得這是個小問題,就直接加了個可選鏈操作符:
e?.props?.searchValue
這下代碼不報錯了,愉快提交,我也是想都沒想就給他通過合并了,大伙都因為解決了問題,老開心了。

雖然后來我才發(fā)現(xiàn)是因為自己忘了提交 yarn.lock 文件到代碼倉庫中,導致他們下載的依賴版本號和我本地不同,所以才出現(xiàn)了我本地能運行,他們卻運行不了的情況。
不過既然現(xiàn)在項目已經(jīng)能跑了,就不管了吧,接著開心。

結果,今天我自己要使用系統(tǒng)時,才發(fā)現(xiàn)這個改過代碼的功能怎么突然不能用了!?
排查后才發(fā)現(xiàn),原來之前升級版本后,組件的函數(shù)參數(shù)發(fā)生了改變,通過之前的代碼再也獲取不到需要的屬性值了。雖然通過加可選鏈操作符可以防止報錯,但實際上,這行代碼邏輯已經(jīng)不對了,毫無意義。
對啊,我早該想到,為什么同樣的代碼,之前沒因為 undefined 報錯,升級后報錯了呢?既然我們沒改變,那變的肯定是第三方依賴啊!
所以還是太自信了,很多時候?qū)е?Bug 產(chǎn)生的原因就是 “我以為的就是我以為的”。

最后總結兩點:
能不升版本,就別升(代碼能運行,就別去動他)。 升級版本后,一定要做充分的測試,不要盲目自信(代碼能跑,不一定系統(tǒng)就可用)。
希望大家能記在心里,千萬別小看它們。我現(xiàn)在發(fā)現(xiàn),工作中往往越自信,就越打臉。
肝項目到現(xiàn)在才抽空寫了篇文章,明天又得上班了,這小 Bug 值一個點贊么?

往期推薦
