蜜臀91精品国产高清在线观看_天天做天天爱天天综合网2021_91tv精品福利国产在线观看_国产精品嫩草影院av蜜臀

新聞中心
什么是重構,什么不是重構
信息來源:長沙做網站--行政組  /  發布時間:2012-5-14  /  瀏覽數量:

有時候,會有程序員跑到我這里說他們不喜歡某個東西的設計,“我們需要給它來個全面的重構”,來糾正里面的錯誤。哦,哦。這聽起來可不是個好主意。而且這聽起來也不是重構…

重構(Refactoring)這個詞最初由Martin Fowler 和 Kent Beck給下的定義,它是

一種修改,使軟件的內部結構更容易理解,在不改變軟件的可見行為方式前提下使軟件更容易變更…它是一種有節制的整理代碼、使bug產生幾率最小化的方法。

重構的結果是引用了快捷方法、去除了重復代碼和死代碼,使設計和邏輯更加清晰。是在更好的、更聰明的使用編程語言。是在優勢利用你現在知道、但當時的開發程序員并不知道——或并沒有加以利用的信息。不斷的簡化代碼,讓它們更容易理解。不斷的使它們在將來的變更變得更容易、更安全。

在這個過程中發現了bug、修改bug,這不是重構。優化不是重構。強化異常捕捉、增加預防性代碼不是重構。讓代碼更容易測試不是重構——盡管重構能達到相同的效果。這些所有的事都是有益的。但這些都不是重構。

程序員,特別是做維護工作的程序員,清理代碼是他們的日常工作之一。這是基本工作,是必須要做的。Martin Fowler等人的貢獻是使重構代碼的最佳實踐方法格式化,并把常見的、證明切實有效的重構模式——重構的目標和重構的步驟——進行歸檔分類。

重構很簡單。盡可能在寫代碼前先寫測試能夠防止你犯錯誤。小規模的、獨立的、穩妥的對代碼進行結構上的調整,每次調整完后都要進行測試,確保你沒有改變代碼的行為特征——功能和以前一樣,只是代碼上看著不同。重構模式和現代化的IDE里的重構工具使重構變得容易、安全和代價低廉。

不要為了重構而重構

重構可以被當成一種能給你的代碼變更帶來幫助的措施。代碼重構應該在你進行代碼變更前進行,這樣能讓你確信你對代碼理解了,使你更容易、更安全的把變更引入代碼。對你的重構動作進行回歸測試。然后進行糾正或變更。再次測試。之后可能需要對更多的代碼進行重構,使你代碼變更的意圖變得更加清晰。再次進行全面測試。重構,再變更。或變更,然后重構。

你不是為了重構而重構,你重構是因為你想做其它的事情,而重構能幫助你完成這些事情。

重構的范圍應該受你需要實施的代碼變更或代碼修正來決定——為了讓代碼變更更安全和更簡潔,你應該做些什么?換句話說:不要為了重構而重構。不要對那些你不打算進行變更或不會變更的代碼進行重構。

為理解而做簡略重構(Scratch Refactoring)

Michael Feather的《Working Effectively with Legacy Code》這本書里提到了簡略重構(Scratch Refactoring)的概念;Martin Fowler稱之為“為理解而重構”。這是用來對付那些你不理解的(或不能忍受的)代碼,清理它們,這樣在你打算真正動手修改它前,你能對它們是干什么的有了更好的理解,同樣也對你debug這些代碼有幫助。一旦你能清楚了一個變量或方法的真正意圖,重命名它們,給它們一個更合適的名稱,刪除那些你不喜歡看的(或覺得沒有用的)代碼,拆解復雜的條件語句,把長程序分解成數個容易理解的小程序。

不要惦記著復查或測試這些改動。這是為了讓你的重構快速的推進——這能讓這些代碼以及它們的運行原理在你的大腦里產生一個快速但不完備的原型。從中學習,然后丟掉它們。簡略重構還能讓你嘗試各種不同的重構途徑,學到更多的重構技巧。Michael Feathers建議說,在這個過程中要留意那些看起來沒什么用處、或者特別有用的東西,這樣當你完成此練習后、要真正修改它們時,才能把事情做正確——修改時一點一點來,講究方法,邊修改邊測試。

什么是“大規模”重構?

對代碼進行簡單的但又明顯的重構:消除重復,修改變量和方法名稱使其更有意義,提煉方法使代碼更易懂、更易復用,簡化條件邏輯,把無意義的數字換成命名的變量,把相似的代碼集中到一起。通過這些重構,在代碼的可理解性和可維護性上,你能得到巨大的回報。

相對于這些較小的、行內的重構,更加重大的設計上的重構與之有明顯差異——這就是Martin Fowler所指的”大型重構”。大的、代價很高的變動,附帶有大量的技術風險。這不是你編程過程中的清理代碼和設計改進:這是根本性的重新設計。

有些人喜歡把對一個系統的重新設計或重寫或重新搭建平臺或返工叫“大規模重構”。因為技術上講,這些并不改變軟件功能特征——業務邏輯、軟件輸入和輸出仍和以前一樣,“只是”設計和代碼實現變了。它和常規重構的區別看起來就是:一個是重寫了一段代碼,一個是重寫了一個系統,只要你是一步一步做下來的,你都可以稱之為“重構”——不管你是長年累月被困于將一個老系統換成新代碼,還是對系統架構進行大規模的改造。

“大規模重構”會變的很糟糕。你可能需要花數周、數月(甚至數年)才能完成,需要你對軟件的很多部分進行改動。軟件會因此不能運行,需要分多次發布這些變更,需要你做臨時的臺架(scaffolding)和變通方案——尤其是你采用短周期的敏捷開發方法時。這時Branch by Abstraction這樣的實踐方法就派上用場了,它能幫你在長周期內管理代碼中的變化。

而且在開發新代碼的同時你還要維護舊代碼,這使得代碼版本控制很麻煩,變更起來不方便,致使代碼很脆弱,易犯錯——這正和重構所預期的目的背道而馳。有時這樣的情況會一直持續下去——這種新舊代碼交替的過程永遠不能完成,因為能獲得最大利益的部分都是最先完成,或者因為最初帶來這個想法的顧問已經干別的去了,或者是預算被消減,而且你也討厭維護這樣一個拖拉的項目。

這些是重構——那些不是

在這種重型的項目開發過程中混入重構的概念是不對的。它們從根本上就是另外一種工作,帶有完全不同的開發成本和風險。它混淆了人們對什么是重構、重構能干什么的認識。

重構可以、也應該融入到你寫代碼或維護代碼的過程中——作為日常開發/質量管理的組成部分,就像寫測試和代碼審查一樣。重構應該被安靜的,持續的和低調的完成。它需要我們把工作精力分出一部分給它,它需要在我們的工期評估和風險評估中考慮到它的存在。如果做的正確,你不需要去解釋或向外人驗證這部分工作。

花幾分鐘、一兩個小時做重構,就像是你開發過程中的一種修改,是工作的一部分。如果它讓你花了數天時間,或者更長,那不是重構;那是重寫,或重新設計。如果你需要明確的留出一部分時間(或整個sprint周期)來重構代碼,如果需要為清理代碼而申請批準,或把清理代碼作為一個開發需求,那你不是在重構——即使你用了重構的技術和工具,你仍然做的是另外一種工作。

有些程序員認為對代碼進行根本的、重大的修改是他們的權利和義務,在重構的名義下進行重新設計、重寫,為了將來,也不辜負自己的技藝。重新設計和重寫有時候是你正確的該做的事情。但出于坦誠和表述清楚,請不要把這些活動賦以重構的名義。




上一條: 做企業網站優化方案
下一條: 大學生創業自辦網上商城 半年營收近20萬
相關熱門資訊  News
一二三客戶案例

  123 NETWORK

合作共贏,助您打開網絡營銷財富之間!

m.88aikan.com

合作對接電話:0731-88571521

聯系方式

地址:湖南省長沙市天心區韶山南路248號南園503室

電話:13637482004    0731-88571521

網址:http://m.88aikan.com/

郵箱:123@123007.com

在線QQ咨詢

需求咨詢

價格咨詢

微信咨詢

掃一掃進移動端

版權所有 © 長沙一二三網絡技術有限公司    統一社會信用代碼:91430103MACCH7984M    網站ICP備案號:湘ICP備2023006748號     湘公網安備 43010302001803號        
蜜臀91精品国产高清在线观看_天天做天天爱天天综合网2021_91tv精品福利国产在线观看_国产精品嫩草影院av蜜臀
最新国产成人av网站网址麻豆| 亚洲女女女同性video| 欧美日韩亚洲高清一区二区| 一区二区三区成人精品| 国产精品永久免费在线| 久久久久久久一区二区三区| 一区二区三区.www| 亚洲国产成人精品久久| 国产精品一区亚洲| 欧美激情无毛| 蜜臀av国产精品久久久久| 欧美亚洲免费在线| 亚洲图片欧美日产| 99精品视频免费观看视频| 91久久精品国产91久久性色| 黄色国产精品一区二区三区| 国产一级一区二区| 国产精品一区二区你懂得| 国产精品va在线播放| 欧美日韩国产一区二区| 欧美国产一区二区| 欧美激情一区| 欧美精品午夜| 欧美精品一区二区三区在线看午夜| 蜜桃av一区二区| 欧美电影在线观看完整版| 蜜臀va亚洲va欧美va天堂| 免费视频最近日韩| 免费在线欧美黄色| 欧美高清在线| 欧美三级网址| 国产日韩欧美一区二区三区在线观看| 国产精品一区二区三区久久久| 国产精品嫩草99av在线| 国产精品成人观看视频免费| 欧美深夜福利| 国产偷国产偷亚洲高清97cao| 国产日本欧美在线观看| 国产综合av| 亚洲日本视频| 亚洲你懂的在线视频| 久久精品亚洲一区二区| 欧美不卡视频一区| 欧美午夜久久久| 国产视频一区免费看| 在线免费观看日本欧美| 夜夜爽99久久国产综合精品女不卡| 妖精视频成人观看www| 亚洲在线成人精品| 久久成人免费| 欧美极品在线播放| 国产婷婷一区二区| 亚洲另类黄色| 久久精品中文字幕免费mv| 欧美精品一区在线| 国产亚洲欧洲| 99国产精品久久久久久久久久 | 亚洲激情婷婷| 亚洲一区图片| 欧美国产免费| 国产亚洲a∨片在线观看| 亚洲激情中文1区| 亚洲素人一区二区| 欧美一级二区| 欧美日韩一区二区在线观看| 韩国精品主播一区二区在线观看| 亚洲人成艺术| 久久精品夜色噜噜亚洲aⅴ| 欧美精品一区视频| 国产一区二区三区视频在线观看 | 久久福利电影| 国产精品美女久久| 亚洲精品国产无天堂网2021| 欧美在线一二三区| 国产精品美女一区二区在线观看| 亚洲电影免费| 久久久精品国产99久久精品芒果| 国产精品高潮粉嫩av| 亚洲人午夜精品免费| 久久久www成人免费毛片麻豆| 国产精品二区影院| 一区二区三区鲁丝不卡| 欧美国产91| 亚洲国产美女久久久久| 久久婷婷国产综合精品青草| 国产毛片一区二区| 中日韩男男gay无套| 欧美久久电影| 日韩亚洲一区在线播放| 欧美大香线蕉线伊人久久国产精品| 国产一区二区三区久久久| 欧美一区二区日韩| 国产欧美日韩综合一区在线观看 | 久久精品国产91精品亚洲| 欧美无乱码久久久免费午夜一区| 亚洲精品美女久久7777777| 久久综合福利| 亚洲国产黄色| 欧美日韩不卡在线| 99国产精品99久久久久久粉嫩| 欧美精品一区二区在线观看| 9人人澡人人爽人人精品| 欧美日韩国产一区| 一区二区三区蜜桃网| 欧美精品一区二区视频| 在线亚洲一区观看| 国产精品亚洲欧美| 久久精品综合| 亚洲精品一区二区三区福利| 欧美日韩免费观看一区三区| 亚洲午夜成aⅴ人片| 国产精一区二区三区| 欧美在线日韩在线| 一区精品在线| 欧美激情中文字幕在线| 日韩一区二区免费看| 国产精品乱码一区二区三区| 香蕉久久国产| 亚洲第一在线综合网站| 欧美日韩一本到| 久久国产毛片| 亚洲精品自在在线观看| 国产模特精品视频久久久久| 久久女同精品一区二区| 夜夜嗨av色一区二区不卡| 国产美女精品免费电影| 毛片精品免费在线观看| 亚洲桃花岛网站| 在线观看成人网| 国产精品女人久久久久久| 久久久久国产一区二区| 99精品国产在热久久婷婷| 国内自拍亚洲| 国产精品毛片一区二区三区| 久热这里只精品99re8久| 亚洲一级影院| 亚洲福利国产| 国产午夜精品美女视频明星a级| 欧美激情综合色综合啪啪| 欧美与欧洲交xxxx免费观看 | 久久久欧美一区二区| 9l国产精品久久久久麻豆| 韩国av一区二区三区| 国产精品裸体一区二区三区| 欧美极品一区二区三区| 久久麻豆一区二区| 亚洲自拍偷拍麻豆| 亚洲乱码国产乱码精品精天堂| 国产亚洲欧美一区| 国产精品一区二区三区四区 | 欧美福利一区二区| 久久久综合网站| 性高湖久久久久久久久| 亚洲视频一二| 亚洲日本成人| 亚洲三级影院| 亚洲三级免费电影| 亚洲国产高清aⅴ视频| 黄色日韩精品| 激情欧美一区| 亚洲国产精品成人| 亚洲第一精品福利| 在线国产亚洲欧美| 精品不卡一区| 亚洲国产成人在线| 亚洲福利久久| 亚洲高清av在线| 亚洲国产精品一区二区尤物区| 亚洲第一中文字幕| 一区在线观看| 91久久精品日日躁夜夜躁欧美| 亚洲福利视频免费观看| 最新国产成人在线观看| 亚洲乱码国产乱码精品精98午夜| 亚洲级视频在线观看免费1级| 亚洲激情国产| 日韩午夜三级在线| 亚洲一区二区免费| 亚洲欧美日韩在线播放| 欧美在线高清| 老司机67194精品线观看| 欧美成人免费va影院高清| 欧美激情1区| 国产精品豆花视频| 国产欧美日韩91| 一区二区三区在线视频免费观看 | 欧美在线看片| 久久夜色精品国产噜噜av| 欧美大片在线看| 欧美性一二三区| 狠狠综合久久av一区二区小说| 亚洲成色777777在线观看影院| 日韩香蕉视频| 欧美一级专区| 欧美黄网免费在线观看| 国产精品视频久久| 永久免费精品影视网站| 日韩视频免费观看高清在线视频| 亚洲一区在线直播| 久久久久久久久蜜桃|