天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

代碼修整

  本文是從 Code Refurbishment 這篇文章翻譯而來。

  我們這個(gè)行業(yè)里有大量的專業(yè)術(shù)語被使用。不幸的是,我們并沒有對每個(gè)術(shù)語表達(dá)的究竟是什么意思達(dá)成共識。我經(jīng)常聽到人們誤用“重構(gòu)(Refactoring)”這個(gè)詞,導(dǎo)致這種編程方法在很多企業(yè)里變成可怕的事情而被拒絕采用。怕什么?據(jù)我的觀察,大部分都是因?yàn)殄e(cuò)誤的使用了這個(gè)術(shù)語。

  我認(rèn)為,因?yàn)闆]有對專業(yè)術(shù)語的使用嚴(yán)加管理,致使整個(gè)行業(yè)的發(fā)展受到連累。如果一個(gè)化學(xué)家對另一個(gè)化學(xué)家說“我們準(zhǔn)備做滴定(titration)試驗(yàn)”,所有人都清楚的知道是要干什么。我相信計(jì)算機(jī)科學(xué)仍然是一門非常不成熟的科學(xué)。如果這個(gè)科學(xué)能夠成熟起來,我們對專業(yè)術(shù)語的使用就會(huì)更加精確和有章法,這樣我們的交流就會(huì)更加的精確和有效。

  重構(gòu)對于代碼質(zhì)量和可讀性的改進(jìn)是一種非常有效的技術(shù)方法。精確的描述:它是一種為了將來的維護(hù)和理解而對代碼進(jìn)行改進(jìn)的一種限制性的修改行為。一個(gè)好的例子:把重復(fù)的代碼提煉成一個(gè)方法,所有出現(xiàn)了這重復(fù)代碼的地方都使用這個(gè)方法來代替,以此消除重復(fù)。重構(gòu)是在上世紀(jì)90年代早期被第一次提出來討論的概念,1999年代Martin Fowler的大作《重構(gòu)》出版之后成為業(yè)界普遍接受的技術(shù)方法。

  重構(gòu)會(huì)導(dǎo)致代碼的內(nèi)部結(jié)構(gòu)發(fā)生一些小的變化。這些變化原則上不會(huì)對外部產(chǎn)生任何影響。規(guī)范的單元測試只從外部來檢查代碼的行為,是不會(huì)發(fā)現(xiàn)這些代碼是被重構(gòu)過的。如果代碼的結(jié)構(gòu)變化時(shí)導(dǎo)致了代碼的對外行為發(fā)生變化,那這不是重構(gòu)。

  可是,為什么我們的企業(yè)的相關(guān)人士當(dāng)聽到這么簡單而且有用的“重構(gòu)”技術(shù)時(shí)會(huì)裹足不前呢?我認(rèn)為這是因?yàn)槌绦騿T實(shí)際上說的是一種更加復(fù)雜、成本更高的結(jié)構(gòu)調(diào)整技術(shù),因?yàn)闆]有一個(gè)合適的術(shù)語來表示,就把它叫做“重構(gòu)”了。重構(gòu)里的結(jié)構(gòu)調(diào)整通常不是代碼的推倒重寫,很多的現(xiàn)有代碼都要重用。人們對此害怕的原因是,他們不知道水有多深,一旦掉進(jìn)去將要付出多少時(shí)間,而且懷疑這種行為能帶來多少的好處。

  上面說的結(jié)構(gòu)上發(fā)生重大變化的例子讓我想起來一個(gè)新業(yè)主接管一個(gè)飯店或酒吧后會(huì)做的事情。新主人通常會(huì)對飯店進(jìn)行重新裝修,讓它看起來更有吸引力,更舒適。飯店建筑的大部分都會(huì)被保留和重用,這比完全重建會(huì)減少大量的成本。依我的經(jīng)驗(yàn),當(dāng)程序員使用“重構(gòu)”這個(gè)術(shù)語時(shí),他們真正的意思是,代碼庫中的某些模塊或有邊界的上下文內(nèi)容需要進(jìn)行重大的修整。如果我們把這個(gè)術(shù)語定義清楚,讓相關(guān)人員知道它的目的和意義,那我們就能對項(xiàng)目進(jìn)行更好的計(jì)劃和管理了。

  這些代碼的修整活動(dòng)必須在之初有清晰的目標(biāo),所有的變動(dòng)必須按照要求進(jìn)行測試。例如,當(dāng)我們對業(yè)務(wù)有了新的認(rèn)識后,會(huì)發(fā)現(xiàn)代碼沒有真正的反映出業(yè)務(wù)模型。這種認(rèn)識經(jīng)過一段時(shí)間后不斷的積累,代碼開始不再滿足業(yè)務(wù)需求。如果使用領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(Domain Driven Design),業(yè)務(wù)模型的本質(zhì)會(huì)被看的更清楚。當(dāng)對業(yè)務(wù)有了新的理解后,代碼需要大調(diào)整來適應(yīng)新需求。如果為了趕工期,隨意在需要的地方進(jìn)行代碼修改,代碼的發(fā)展會(huì)偏離精煉出的設(shè)計(jì)模型。各處的修改相互不關(guān)聯(lián),慢慢積累,雖然可以運(yùn)行,但也帶來了不好的副作用。這就需要代碼重構(gòu)。重構(gòu)的過程中,測試的目的就是要檢查這些重大的程序結(jié)構(gòu)調(diào)整是否仍然完全的滿足改進(jìn)后的業(yè)務(wù)設(shè)計(jì)說明。

  對于核心業(yè)務(wù)將來的發(fā)展,或者降低一個(gè)關(guān)鍵的模塊為應(yīng)對產(chǎn)品的需求偶爾做出的升級的風(fēng)險(xiǎn),代碼的修整是十分有必要的。

  我好奇其他人也是否相似的在開發(fā)中出現(xiàn)的這些現(xiàn)象,你覺得對這些概念進(jìn)行重新定義有意義嗎?

it知識庫代碼修整,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日产精品高潮呻吟AV久久 | 亚洲精品www久久久久久久软件 | 女人高潮被爽到呻吟在线观看 | 亚洲精品沙发午睡系列 | 中文字幕人成人乱码亚洲AV | 欧美精品久久久久性色AV苍井 | 四川老师边上网课边被啪视频 | 抽插喷S骚爽去了H | 亚洲AV噜噜狠狠网址蜜桃尤物 | 果冻传媒视频在线播放 | 亚洲精品国产高清嫩草影院 | brazzers欧美最新版视频 | 亚洲日韩在线天堂一 | 啊灬啊别停灬用力啊在线观看视频 | 国产三级在线免费 | 在线免费观看国产精品 | 国产精品成人影院 | 97久久超碰中文字幕 | 97人妻精品全国免费视频 | 久久黄色小视频 | 九九热国产视频 | 男人天堂2018亚洲男人天堂 | 老师那里好大又粗h男男 | 插我一区二区在线观看 | 亚洲人女同志video | 日本国产黄色片 | 国产伊人自拍 | 在线中文字幕亚洲日韩 | 免费看欧美一级特黄a大片 免费看欧美xxx片 | 亚洲高清无码在线 视频 | 日韩精品一区二区中文 | 俄罗斯极品hd | 精品美女国产互换人妻 | 日本xxxx96| 伊人久久大线蕉香港三级 | 精品网站一区二区三区网站 | 最近中文字幕在线中文视频 | 伦理片天堂eeuss影院 | 久久久国产精品免费A片蜜臀 | 男男高h浪荡受h | 亚洲综合色婷婷在线影院 |