成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面對糟糕的舊代碼 千萬不要重寫

開發 后端 開發工具
程序員都有一顆工程師的心,所以當他們到一片新的場地想做的第一件事就是,將舊的一切推倒重來。是的,他們決不會滿足于簡單的增量勞動。

程序員都有一顆工程師的心,所以當他們到一片新的場地想做的第一件事就是,將舊的一切推倒重來。是的,他們決不會滿足于簡單的增量勞動。

或許這種微妙的心理定位可以解釋:為什么程序員進入新項目組后寧愿丟掉舊代碼重新寫,也不愿意修修補補。他們認為舊代碼簡直一團糟。

但是,事實上真是這樣嗎?你之所以認為舊代碼一團糟,其實是由編程的一個基本定律決定的,那就是:寫代碼容易,讀代碼難。

為什么你覺得舊代碼異常混亂?因為讀代碼更難。

這大概就是代碼Reuse難以實現的原因。 這就是你組里的每個人都喜歡用不同的功能將分割的字符串轉換成一個數組。比起猜測舊的功能是怎樣實現的,重新寫一個自己的功能要簡單和有趣多了。

作為這個公理的推論,你可以問問身邊的程序員他們正在奮戰的代碼怎么樣?「簡直是一塌糊涂!」他們肯定會這樣說。「我簡直想推倒重來!」

為什么認為代碼這么糟糕呢?「額,看看這個功能,竟然有兩頁長!完全不知道這些東西為什么在這里!完全不知道這些API是干什么的。」他們會這樣回答你。

曾經,Borland的創始人 Philippe Kahn當初就是向記者們吹噓:Quattro Pro會比Microsoft Excel要好用得多,因為它是從頭開始編寫的,全部都是新的源代碼!

但是,認為新代碼比舊代碼好簡直就是荒謬。舊代碼是已經運行過的,測試過的。無數的bug在被發現前都上線運行過,發現之后程序員們可能在花了好些日子才修復了這些bug。這種修復可能是一行代碼,也可能是幾個字符,無數的時間和精力都花在了這些bug修復上。

當你決定拋棄這些舊代碼從零開始的時候,你也丟掉全部前任努力的結果。

新代碼一定比舊代買好?NO,重寫可能會帶來更大的風險。

對技術領導者來說,重寫項目的代碼也是一個異常艱難的決定。因為從公司層面說,重現代碼甚至會威脅產品的市場競爭力。一旦決定重寫代碼,那么與競品相比,你可能落后了2~3年——在軟件行業,這時間可夠長的。

你理想中的新代碼會帶來產品功能的提升▼

 

但事實上,即便重寫的新代碼可以實現舊代碼的所有功能和需求,但是為產品帶來的市場競爭力只有邊際提升。因為重寫用的新技術、新語言、新框架并沒有給產品帶來質的飛躍。

更不用說在重寫的漫長過程中可能會遇到一些意外情況,比如:

1、缺錢:資金鏈的斷裂▼

[[138280]]

2、缺人:核心程序員離職

最終導致效果不佳:達不到原產品應有的所有功能和需求,白白浪費了時間和金錢,也丟掉了市場競爭力。▼

[[138281]]

所以重寫代碼意味著,你在把自己置身于非常危險的境地,可能幾年后你也寫不出比以前更好的代碼。你只是花了一大筆錢把已經存在的代碼又寫了一遍。

當你覺得眼前的舊代碼很爛時,該怎么辦?

你覺得舊代碼寫的很爛,那又怎樣呢?它們已經上線,已經在實際運行中經受住了考驗。所以當你發現前任留下的代碼亂七八糟的時候,不妨冷靜下來,從以下三個方面入手理解代碼、改善代碼:

1、代碼的結構有問題

如果一段網絡代碼突然彈出了自己的對話框,應該是UI代碼需要被處理。這些問題可以被解決掉,你要一次次小心地移動代碼,重構,改變接口。還需要一 位細心的工程師立馬仔細地檢查這些改變是否有問題,從而不打擾到其他人。事實上,甚至比較大的結構變化也可以不扔掉代碼來完成。

大牛程序員Joel Spolsky回憶說,曾經在某個項目中,他和他的團隊花了好幾個月重新架構在一點上:把代碼動來動去、清理、創建有意義的基類,并創建了模塊之間的完美接口。但是他們始終非常小心翼翼,并沒有產生新的bug、也沒有丟掉任何舊代碼。

2、代碼的效率不高

曾經,Netscape的渲染代碼被傳非常緩慢。但事實上,這只會影響該項目的一小部分,這部分是你可以優化甚至重寫的。你完全不必重寫全部代碼。優化速度的1%工作量,會讓你獲得99%的爆炸性提高。

3、代碼寫得很丑

有些代碼真的寫的很丑,比如Joel曾參與一個項目,開始用下劃線做開始的成員變量約定,但后來改用更標準的「M_」。所以一半的功能用「_」開始,一半用「M」開始,這看起來真的很丑陋。但這個問題5分鐘就能解決,而不用從頭開始寫全部的代碼。

最后,你要記住,從頭開始再寫一遍并不意味著你會寫出比以前更好的代碼。因為你沒有參與到上一個版本的創建,所以你其實根本就不算有經驗。一旦你準備推倒重寫,你可能會再犯一遍版本一犯過的錯,甚至會產生更多的新問題。

100offer說:面對糟糕的舊代碼,Keep Calm & Carry On !

在大型商業項目中,推倒重來是非常危險的行為。當然,如果你是在做實驗,想到新算法可以隨時重寫。

如果你跳槽、或剛接手一個新項目,面對看上去異常混亂的舊代碼,請冷靜下來,忍住推倒重寫的沖動,想想上面這些經驗之談。

題圖:《重來》(Rework) , 中信出版社

參考資料:
Joel Spolsky www.joelonsoftware.com
Jeremy Burton vibratingmelon.com

來源:http://100offer.com/blog/posts/85

 

 
 
責任編輯:王雪燕 來源: 博客園
相關推薦

2015-07-28 10:28:54

程序員代碼

2018-05-07 15:59:39

代碼程序員重寫

2015-07-27 15:27:11

程序員重寫代碼

2019-11-08 13:57:53

程序員Excel軟件

2012-03-14 14:25:57

2017-05-24 11:44:17

Linux命令

2019-04-03 14:03:58

Linux命令運行

2022-09-20 18:27:31

Kubernetes云服務

2012-12-28 09:47:07

程序員代碼編程

2023-11-23 13:07:18

代碼Golang

2012-03-28 22:06:15

Android

2015-10-10 10:36:00

warning category

2013-05-31 15:57:59

Windows 8.1

2020-04-03 08:30:44

RabbitMQKafka軟件

2025-03-10 00:00:00

2020-02-19 14:51:15

程序系統工程師

2024-11-20 18:16:39

MyBatis批量操作數據庫

2010-01-19 17:37:30

服務器綠色概念

2021-01-25 08:00:00

Linux系統數據

2014-05-16 10:51:33

科學代碼最佳實踐
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产综合 | 欧美一区二区黄 | 97久久精品午夜一区二区 | 成人亚洲精品久久久久软件 | 日日夜夜天天干 | 亚洲精品久久久久国产 | 99爱在线 | 国产91在线 | 中日 | 成人精品鲁一区一区二区 | 91.xxx.高清在线 | 狠狠色网 | 久久久久国 | 免费毛片在线 | 99国产精品久久久 | 欧美日韩国产精品一区 | 一级在线毛片 | www.奇米| 成人午夜视频在线观看 | 免费一区二区 | 丁香色婷婷 | 国产精品久久国产精品 | 婷婷激情在线 | 亚洲精品国产精品国自产在线 | 97精品超碰一区二区三区 | 免费在线h视频 | 91视频在线看 | 日韩黄色av | 九九精品在线 | 日韩一区二区三区在线观看 | 国产精品久久国产精品 | 国产av毛片| 国产精品美女在线观看 | 日韩在线观看网站 | 亚洲九九 | 精品中文在线 | 91精品一区 | 欧美视频 亚洲视频 | 欧美综合一区二区 | 91精品在线观看入口 | 成年人在线视频 | 国产精品久久久免费 |