你可曾體會(huì)過(guò)嘉汰,在你修Bug的時(shí)候丹禀,還有Bug在等你修;
你可曾體會(huì)過(guò)鞋怀,每天至少有四五個(gè)Bug等你修双泪;
你可曾體會(huì)過(guò),早上剛到座位拿出電腦看到的第一條消息就是有人在給你說(shuō)Bug密似;
......
前言
相信看過(guò) 重構(gòu)之十六字心法 的人即使不記得文中的具體內(nèi)容焙矛,但至少也記得下面這十六個(gè)字:
這十六個(gè)字,看似簡(jiǎn)單残腌,但真正重構(gòu)的時(shí)候又有多少人能夠做到呢薄扁?同時(shí),又有多少人能夠做到重構(gòu)的同時(shí)又不產(chǎn)生新Bug呢废累?
至少我是沒有做到,因?yàn)檫@次重構(gòu)脱盲,總有Bug在等我邑滨。
起始
這場(chǎng)Bug在等我的風(fēng)暴始于一個(gè)在原有功能上擴(kuò)展新功能的需求,同時(shí)原有的數(shù)據(jù)結(jié)構(gòu)又不支持新功能的情況下钱反。
按照以往的慣例掖看,針對(duì)上面的情況匣距,我們有兩種方案:一先重構(gòu)使原有功能支持新的數(shù)據(jù)結(jié)構(gòu),再進(jìn)行新功能的開發(fā)哎壳;二按照原有數(shù)據(jù)結(jié)構(gòu)開發(fā)新功能毅待,新功能開發(fā)完成后進(jìn)行重構(gòu),使得新舊功能都支持新的數(shù)據(jù)結(jié)構(gòu)归榕。
那么問(wèn)題來(lái)了尸红,當(dāng)你按照原有的結(jié)構(gòu)進(jìn)行前端新功能的開發(fā);而后端相應(yīng)的接口已經(jīng)進(jìn)行修改刹泄,符合新的數(shù)據(jù)結(jié)構(gòu)外里,同時(shí)你在做前端新功能的時(shí)候遇到一個(gè)問(wèn)題Block了你的開發(fā)。這時(shí)候特石,你請(qǐng)教了周圍有經(jīng)驗(yàn)的人盅蝗,他告訴你,前端Redux中的數(shù)據(jù)結(jié)構(gòu)也需要改成新的結(jié)構(gòu)姆蘸。
此時(shí)墩莫,針對(duì)前端你是繼續(xù)按照原有的數(shù)據(jù)結(jié)構(gòu)開發(fā)新功能呢?還是直接進(jìn)行重構(gòu)呢逞敷?
有人建議狂秦,先按照原有數(shù)據(jù)結(jié)構(gòu)開發(fā)完新功能再進(jìn)行重構(gòu)。是的兰粉,我們確定應(yīng)該這樣做故痊。然而,后端接口已經(jīng)改成了新結(jié)構(gòu)玖姑,前端如果按照原有結(jié)構(gòu)繼續(xù)做下去愕秫,這和我們后面要進(jìn)行的重構(gòu)是背道而馳的。
過(guò)程
在強(qiáng)哥的建議下焰络,前端我們先把新功能按照新結(jié)構(gòu)寫戴甩,再重構(gòu)原有的功能;后端為了不block其他人的開發(fā)進(jìn)度闪彼,暫時(shí)先將原有的字段加入返回值中甜孤,待前端重構(gòu)進(jìn)行完成再刪除。
于是畏腕,就這樣和強(qiáng)哥pair開始了我們這次的重構(gòu)缴川。
在和強(qiáng)哥pair重構(gòu)的過(guò)程中,我每天都會(huì)寫出不同的Bug描馅,然后強(qiáng)哥帶我分析把夸、定位、解決Bug铭污。
印象最深的還是恋日,連續(xù)被一個(gè)循環(huán)調(diào)用坑了兩次膀篮,在通過(guò)強(qiáng)哥兩次直覺解決問(wèn)題之后,第三次終于憑自己的直覺幫其他人解決了她寫的由于循環(huán)調(diào)用而引起的Bug岂膳。
同時(shí)誓竿,在一次BA提出基于我們所做的增加新需求的時(shí)候,能夠和強(qiáng)哥針對(duì)新需求給出基本一致的解決方案谈截。
重構(gòu)過(guò)程中筷屡,由于我們對(duì)于原有功能的業(yè)務(wù)都不清楚,只能邊寫邊讀傻盟,讀不懂的就問(wèn)不同的人速蕊,雖然產(chǎn)生的Bug很多,等我們的Bug也很多......
結(jié)尾
重構(gòu)和新功能的開發(fā)雖然基本已經(jīng)完成了娘赴,但是Bug還測(cè)完规哲。預(yù)計(jì)還有一波Bug在等我。
有人問(wèn)我诽表,這次重構(gòu)有什么想法唉锌?
我只能說(shuō),以前寫的Mobile竿奏,都不是Mobile袄简,這次寫的才是真正Mobile。
代碼寫的多了泛啸,Bug也就多了绿语,等你的Bug也就多了。