国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
優(yōu)秀程序員的習(xí)慣1

單元測(cè)試帶來(lái)的積極效應(yīng)之一,是它會(huì)強(qiáng)迫形成代碼的分層。要保證代碼可測(cè)試,就必須把它從周邊代碼中解脫出來(lái)。如果代碼依賴其他模塊,就應(yīng)該使用mock對(duì)象,來(lái)將它從其他模塊中分離開。這樣做不但讓代碼更加健壯,且在發(fā)生問題時(shí),也更容易定位來(lái)源。

 

否則,發(fā)生問題時(shí)有可能無(wú)從下手。也許可以先使用調(diào)試器,逐行執(zhí)行代碼,并試圖隔離問題。也許在進(jìn)入到感興趣的部分之前,要運(yùn)行多個(gè)表單或?qū)υ捒?,這會(huì)導(dǎo)致更難發(fā)現(xiàn)問題的根源。你會(huì)發(fā)現(xiàn)自己陷入整個(gè)系統(tǒng)之中,徒然增加了壓力,而且降低了工作效率。

 

大型系統(tǒng)非常復(fù)雜——在執(zhí)行過程中會(huì)有很多因素起作用。從整個(gè)系統(tǒng)的角度來(lái)解決問題,就很難區(qū)分開,哪些細(xì)節(jié)對(duì)要定位的特定問題產(chǎn)生影響,而哪些細(xì)節(jié)沒有。

答案很清晰:不要試圖馬上了解系統(tǒng)的所有細(xì)節(jié)。要想認(rèn)真調(diào)試,就必須將有問題的組件或模塊與其他代碼庫(kù)分離開來(lái)。如果有單元測(cè)試,這個(gè)目的就已經(jīng)達(dá)到了。否則,你就得開動(dòng)腦筋了。

 

比如,在一個(gè)時(shí)間緊急的項(xiàng)目中(哪個(gè)項(xiàng)目的時(shí)間不緊急呢),F(xiàn)red和George發(fā)現(xiàn)他們面對(duì)的是一個(gè)嚴(yán)重的數(shù)據(jù)損毀問題。要花很多精力才能知道哪里出了問題,因?yàn)殚_發(fā)團(tuán)隊(duì)沒有將數(shù)據(jù)庫(kù)相關(guān)的代碼與其他的應(yīng)用代碼分離開。他們無(wú)法將問題報(bào)告給軟件廠商,當(dāng)然不能把整個(gè)代碼庫(kù)用電子郵件發(fā)給人家!

 

于是,他們倆開發(fā)了一個(gè)小型的原型系統(tǒng),并展示了類似的癥狀;然后將其發(fā)送給廠商作為實(shí)例,并詢問他們的專家意見,使用原型幫助他們對(duì)問題理解得更清晰。

 

而且,如果他們無(wú)法在原型中再現(xiàn)問題的話,原型也可以告訴他們可以工作的代碼示例,這也有助于分離和發(fā)現(xiàn)問題。

 

識(shí)別復(fù)雜問題的第一步,是將它們分離出來(lái)。既然不可能在半空中試圖修復(fù)飛機(jī)引擎,為什么還要試圖在整個(gè)應(yīng)用中,診斷其中某個(gè)組成部分的復(fù)雜問題呢?當(dāng)引擎被從飛機(jī)中取出來(lái),而且放在工作臺(tái)上之后,就更容易修復(fù)了。同理,如果可以隔離出發(fā)生問題的模塊,也更容易修復(fù)發(fā)生問題的代碼。

 

 

    分離原型                          Prototype to isolate

 

可是,很多應(yīng)用的代碼在編寫時(shí)沒有注意到這一點(diǎn),使得分離變得特別困難。應(yīng)用的各個(gè)構(gòu)成部分之間會(huì)彼此糾結(jié):想把這個(gè)部分單獨(dú)拿出來(lái),其他的會(huì)緊隨而至。

 

對(duì)問題各個(gè)擊破,這樣做有很多好處:通過將問題與應(yīng)用其他部分隔離開,可以將關(guān)注點(diǎn)直接放在與問題相關(guān)的議題上;可以通過多種改變,來(lái)接近問題發(fā)生的核心——你不可能針對(duì)正在運(yùn)行的系統(tǒng)來(lái)這樣做??梢愿斓匕l(fā)現(xiàn)問題的根源所在,因?yàn)橹慌c所需最小數(shù)量的相關(guān)代碼發(fā)生關(guān)系。

 

隔離問題不應(yīng)該只在交付軟件之后才著手。在構(gòu)建系統(tǒng)原型、調(diào)試和測(cè)試時(shí),各個(gè)擊破的戰(zhàn)略都可以起到幫助作用。

 

對(duì)問題各個(gè)擊破
在解決問題時(shí),要將問題域與其周邊隔離開,特別是在大型應(yīng)用中。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
分而治之,各個(gè)擊破——軟件調(diào)試的慣用戰(zhàn)術(shù)
Autosar,好嗎?
系統(tǒng)架構(gòu)-性能篇章2(系統(tǒng)拆分1)
耦合與解耦
關(guān)于javascript模塊加載技術(shù)的一些思考
從一個(gè)小網(wǎng)站變成了大型網(wǎng)站,網(wǎng)站架構(gòu)上到底發(fā)生了什么變化?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服