新聞中心
當(dāng)你編程的時候,復(fù)制和粘貼—將你現(xiàn)有的代碼進行再利用,這是不必再重復(fù)編碼的***做法。這是一個技術(shù)債務(wù)的***例子:偷懶,草率和目光短淺,這會讓維護代碼的長期成本增加。

公司主營業(yè)務(wù):網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出蕉嶺免費做網(wǎng)站回饋大家。
但它同時也很自然,找一些已經(jīng)在運行的代碼,跟你所需要的非常像,復(fù)制,粘貼,并用它作為起點。幾乎每個人都這么干過。因為有些時候,復(fù)制過來的代碼不僅僅是方便,而且就算我們所需要的
首先要清楚我講得復(fù)制粘貼的意思。不是說從互聯(lián)網(wǎng)上復(fù)制代碼,我指的是程序員重用代碼的捷徑–當(dāng)他們遇到的問題與他們之前在另外一個系統(tǒng)中遇到的問題類似的時候,他們開始用現(xiàn)有的代碼副本,并加以改變。
在開發(fā)和設(shè)計階段的早期,復(fù)制和粘貼并沒有什么優(yōu)勢。代碼和設(shè)計仍可塑的,這時系統(tǒng)需要做的是建立一套正確的抽象。這個時候沒有什么好復(fù)制的。當(dāng)在你開發(fā)的后期時,你已經(jīng)有大量的代碼,你需要維護龐大的系統(tǒng),復(fù)制和粘貼就變得更加復(fù)雜。
為什么要復(fù)制粘貼?
程序員復(fù)制粘貼,因為這樣可以節(jié)省時間。首先,你必須站在一個起點,你要知道你的代碼要做什么事?你所要做的就是那里需要增加,哪里需要修改。你就可以專注于理解不同點。這時你變得更加自由–你可以清理你不需要的代碼。這一切都很主要。因為你可能不知道你需要保留的,你需要改變的,直到你進入更深的層面。
復(fù)制和粘貼同樣可以降低風(fēng)險。如果你改變和擴展現(xiàn)有的代碼,至少它運行了一段時間,通常是更安全的,并且成本較低。
如果你正在構(gòu)建一個新的 B2B 客戶界面,你會使用新的嗎?通常會采用現(xiàn)有的接口,作為新的起點。然后看看那里需要改變,到年底的時候,你就有了 2 個接口,但通常需要一段的時間來理解這個代碼是什么?
找到一個共同的設(shè)計,正確的抽象和變化,以支持不同的現(xiàn)實和異常處理。你最終的代碼可能變得無法理解,難以維護,直到不得不改變—因為原來的設(shè)計沒有預(yù)料到不同情況下的異常和擴展,重構(gòu)只能到此結(jié)束,你需要一個全的設(shè)計和實施。
改變現(xiàn)有的代碼,進行重構(gòu)和擴展,將會讓你目前的工作增加風(fēng)險和成本,你不能為了適應(yīng)網(wǎng)上的新客戶而讓給老客戶帶來問題。你需要格外的小心,你不但要明白你將要做的事每個細(xì)節(jié)(新界面),而且要明白現(xiàn)有界面的每個細(xì)節(jié),它的行為和假設(shè)。
如果你認(rèn)為這些改變都能被自動化測試工具捕捉到,那你就很天真了—假設(shè)你已經(jīng)有良好的自動化測試工具,你需要整合現(xiàn)有的接口測試,這可能需要花費數(shù)周甚至數(shù)月的時間。讓那些客戶花費這么多的時間適應(yīng)新界面,他們會不滿意,因為他們都已經(jīng)習(xí)慣了。
現(xiàn)在就復(fù)制粘貼,如果需要的話,過些日子要制定計劃來重構(gòu)和重新設(shè)計,是明智的選擇。
什么時候該復(fù)制粘貼?
1. 分叉 — 試探性的原因,如適應(yīng)不同的平臺或者硬件
2. 模板 — 一些語言不支持某些庫或者共享函數(shù),這時有必要復(fù)制粘貼代碼。
3. 定制 — 臨時的解決辦法,只要是臨時的。
4. 微軟克隆的做法 — 一個小組的代碼給另外小組用。這時開源的通常做法,需要擴展來解決專有問題。
什么時候復(fù)制粘貼會變成問題?
什么時候復(fù)制粘貼會成為問題,有幾個主要因素。
首先,你對你復(fù)制的代碼理解程度是多少,你穩(wěn)定程度如何,有多少潛在的 bug。你總不想繼承別人的問題吧。
還要知道這個代碼已經(jīng)拷貝了多少份?根據(jù)“三則重構(gòu)”(three strikes and you refactor)原則。因為你復(fù)制了什么,并且加上改變,就帶來維護上的問題。這個維護的困難就是如何理清問題,因為 2 個版本不足以理解哪些是共有的,哪些是特殊的。
越多次的拷貝,越多的維護上的問題。多個版本的更改和修正增加了維護的風(fēng)險和成本。保持代碼的同步,需要在多個系統(tǒng)中改變它。
雖然一些工具可以幫助你來尋找復(fù)制和粘貼的代碼。隨著時間的推移,不同的程序員尋找復(fù)制的副本代碼變得更加艱難。有些程序員建議離職時做好復(fù)制標(biāo)記,以便后來的程序員維護。
Copy and Paste programming doesn’t come for free. But like a lot of other ideas and practices in software development, copy and paste programming isn’t right or wrong. It’s a tool that can be used properly, or abused.
復(fù)制粘貼不是免費的。和軟件開發(fā)中的其它想法和實踐一樣,它沒用對錯之分。它是一個工具,你可以善用,也可以濫用。
Brian Foote, one of the people who first recognized the Big Ball of Mud problem in software design, says that copy and paste programming is the one form of reuse that programmers actually follow, because it works.
It’s important to recognize this. If we’re going to Copy and Paste, let’s do a responsible job of it.
意識到這些是非常重要的,假設(shè)我們有復(fù)制粘貼,我們必須為我們的工作負(fù)責(zé)。
原文鏈接:Is Copy and Past Programming Really a Problem?
新聞標(biāo)題:復(fù)制粘貼代碼真的有問題嗎?
新聞來源:http://fisionsoft.com.cn/article/cccgsjo.html


咨詢
建站咨詢
