chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么你覺得舊代碼異?;靵y?因為讀代碼更難

機器學習算法與人工智能 ? 來源:未知 ? 作者:李倩 ? 2018-05-23 11:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

想要推倒舊代碼,

重寫代碼的程序員們,

請注意:

保持冷靜,繼續(xù)前行!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

缺錢:資金鏈的斷裂

缺人:核心程序員離職

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

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

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

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

1代碼的機構有問題

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

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

2代碼的效率不高

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

3代碼寫得很丑

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

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

面對糟糕的舊代碼,Keep Calm & Carry On !

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4921

    瀏覽量

    72207
  • 程序員
    +關注

    關注

    4

    文章

    954

    瀏覽量

    30691

原文標題:為什么程序員千萬不要重寫代碼?

文章出處:【微信號:machinelearningai,微信公眾號:機器學習算法與人工智能】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    代碼格式化工具Clang-Format提升的CW32工程質量

    它能自動統(tǒng)一團隊代碼風格,讓不同開發(fā)者寫出的代碼如出一轍。就像 CW32 官方庫函數(shù)遵循統(tǒng)一規(guī)范一樣,Clang-Format 能讓團隊所有成員的代碼瞬間保持一致,徹底消除 "tabs vs spaces" 的爭論。
    的頭像 發(fā)表于 10-09 17:43 ?718次閱讀
    <b class='flag-5'>代碼</b>格式化工具Clang-Format提升<b class='flag-5'>你</b>的CW32工程質量

    Ansible代碼上線項目實戰(zhàn)案例

    在DevOps浪潮中,自動化部署已經成為每個運維工程師的必備技能。今天我將分享一個完整的Ansible代碼上線項目實戰(zhàn)案例,讓的部署效率提升10倍!
    的頭像 發(fā)表于 07-24 14:03 ?288次閱讀

    聚徽——設備報警別亂陣腳!工控一體機異常代碼速查手冊

    在工業(yè)自動化場景中,工控一體機作為核心控制設備,其穩(wěn)定運行直接關系到生產效率與質量。然而,設備報警代碼的出現(xiàn)往往讓維護人員措手不及。本文結合實際案例與權威技術資料,整理出一套工控一體機異常代碼速查
    的頭像 發(fā)表于 06-12 14:11 ?1313次閱讀

    【經驗分享】玩轉FPGA串口通信:從“幻覺調試”到代碼解析

    FPGA開發(fā),思路先行!玩FPGA板子,代碼是基本功!尤其對從C語言轉戰(zhàn)FPGA的“寶貝們”來說,適應流水線(pipeline)編程可能需要點時間。上篇點燈代碼解讀了基礎,而如果能親手寫出串口通訊
    的頭像 發(fā)表于 06-05 08:05 ?653次閱讀
    【經驗分享】玩轉FPGA串口通信:從“幻覺調試”到<b class='flag-5'>代碼</b>解析

    從初學到進階:樹莓派上最適合代碼編輯器推薦!

    之前,需要安裝一些必備工具,代碼編輯器便是其中之一。樹莓派系統(tǒng)自帶了一些代碼編輯器,它們功能良好,足以滿足基本需求。不過,如果需要更高級的功能,就必須探索其他
    的頭像 發(fā)表于 05-15 16:20 ?579次閱讀
    從初學到進階:樹莓派上最適合<b class='flag-5'>你</b>的<b class='flag-5'>代碼</b>編輯器推薦!

    OLED代碼分享

    OLED代碼
    發(fā)表于 04-29 17:04 ?1次下載

    東元伺服驅動器報警代碼

    東元伺服驅動器的報警代碼是用于指示驅動器運行過程中遇到的故障或異常狀態(tài)的重要信息。以下是一些常見的東元伺服驅動器報警代碼及其對應的故障原因: 1. AL-00:無報警。表示伺服驅動器當前沒有檢測
    的頭像 發(fā)表于 04-23 17:58 ?4044次閱讀
    東元伺服驅動器報警<b class='flag-5'>代碼</b>

    沐渥科技:氮氣柜故障代碼解讀及處理建議

    氮氣柜的故障代碼因品牌和型號不同而有所差異,但通常涵蓋一些常見問題。以下是沐渥科技對故障代碼的解讀及處理建議:一、代碼解讀和原因分析1、E1/E01/SensorError含義:氧氣或濕度傳感器故障
    的頭像 發(fā)表于 03-20 13:18 ?810次閱讀
    沐渥科技:氮氣柜故障<b class='flag-5'>代碼</b>解讀及處理建議

    HarmonyOS NEXT 原生應用/元服務-ArkTS代碼調試使用斷點

    DevEco Studio ArkTS支持行斷點和異常斷點,這些斷點可以觸發(fā)不同的操作。 行斷點 行斷點是最常見的類型,用于在指定的代碼行暫停應用的執(zhí)行,在暫停時,您可以檢查變量,對表達式求值,然后
    發(fā)表于 03-04 17:15

    分析C語言代碼結構的設計問題

    來分析一個C語言代碼結構的設計問題。 這段代碼,使用了兩次malloc,分別給 p1 和 p2 申請了內存。用完后,內存釋放,防止內存泄漏。 大家覺得,這樣的代碼設計有沒有問題。
    的頭像 發(fā)表于 02-11 09:31 ?544次閱讀

    代碼與傳統(tǒng)開發(fā)的區(qū)別 低代碼與無代碼開發(fā)的區(qū)別

    在軟件開發(fā)領域,傳統(tǒng)開發(fā)、低代碼開發(fā)以及無代碼開發(fā)是三種不同的開發(fā)方式,每種方式都有其獨特的優(yōu)勢和適用場景。 一、低代碼開發(fā)與傳統(tǒng)開發(fā)的區(qū)別 低代碼開發(fā)是一種新興的應用程序開發(fā)方法,旨
    的頭像 發(fā)表于 01-31 10:48 ?881次閱讀

    代碼在敏捷開發(fā)中的應用

    代碼平臺的定義 低代碼平臺提供了一個可視化的、拖放式的用戶界面,允許開發(fā)者通過圖形化的方式快速構建應用程序,而無需編寫大量的代碼。這些平臺通常包括預構建的模板、組件和邏輯模塊,使得開發(fā)人員可以專注
    的頭像 發(fā)表于 01-07 09:58 ?655次閱讀

    Java代碼之美,從遵循樣式規(guī)范開始

    至關重要。本文將帶你探索Java代碼的美學,揭示那些能夠讓代碼既美觀又高效的樣式規(guī)范。無論是初出茅廬的新手還是經驗豐富的老手,都能從中獲得靈感,提升編碼的藝術。 一、為什么要代碼
    的頭像 發(fā)表于 11-27 11:42 ?758次閱讀
    Java<b class='flag-5'>代碼</b>之美,從遵循樣式規(guī)范開始

    Gmapping源代碼

    Gmapping源代碼.docx
    發(fā)表于 11-16 13:42 ?0次下載

    如何自動生成verilog代碼

    介紹幾種自動生成verilog代碼的方法。
    的頭像 發(fā)表于 11-05 11:45 ?1330次閱讀
    如何自動生成verilog<b class='flag-5'>代碼</b>