在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

代碼整潔之道-大師眼中的整潔代碼是什么樣

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-09-09 16:30 ? 次閱讀

幾個月前寫了一篇文章“如何寫出難以維護的代碼”,從中能大概了解到不好維護的代碼是什么樣,有哪些壞味道,那肯定有人會反問,難以維護的代碼見的太多了,也知道長什么樣,但是對于好維護的代碼是什么樣的比較模糊,帶著這個問題,本人讀完了世界軟件開發大師馬丁的《代碼整潔之道》這本書,來了解下大師眼中的整潔代碼畫像是什么樣的,相信能給你帶來不一樣的理解和感悟。

wKgZombesjCAGIWdAAHN7xWKtsQ450.png

關于整潔代碼,沒有明確的定義,有多少程序員就有多少種定義。下面先看下幾位大師是如何定義的。

C++語言發明者Bjarne Stroustrup提到:

代碼應該優雅高效,代碼邏輯應該直截了當,讓缺陷難以隱藏盡量減少依賴關系,便于維護;按照某種分層策略完善錯誤處理,性能調到最優,不會讓別人修改的更混亂整潔的代碼只做一件事

?

《面向對象分析與設計》一書作者Grad Booch提到:

整潔的代碼簡單直接,如同散文一樣優美從不隱藏設計者的意圖,代碼抽象干凈利落,控制語句直截了當。

?

Eclipse戰略教父Dave Thomas這么定義:

整潔的代碼應可由其他開發者閱讀和增補,應當有單元測試和驗收測試,使用有意義的命名,只提供一種而非多種做一件事的途徑,只有盡量少的依賴關系,而且要明確地定義和提供清晰、盡量少的API

?

《修改代碼的藝術》一書作者Michael Feathers定義:

整潔代碼應該是特別在意代碼的人才能寫出來的,幾乎沒有改進的余地,作者各種情況都想到了,如果你想改進它,總會回到原點,總會贊嘆寫代碼的人的專心和認真。

?

《極限編程實施》作者Ron Jeffries提出整潔代碼:

能通過所有測試,沒有重復代碼,代碼能體現設計理念,盡量減少類,方法以及函數。

?

綜合以上幾位大師對整潔代碼的定義闡述,可以歸納總結一下整潔代碼的畫像:

1.體現設計理念,這個整潔代碼特性在以上大師的定義里面多次提到了,Grady提到整潔代碼不會隱藏設計意圖,Ron提到整潔代碼一看就知道采用了什么樣的設計理念。體現設計理念看上去有點虛,但是實際上我認為是最重要的一點,所謂代碼即設計,只要能回答代碼為什么這么寫,就說明你的代碼有設計思想在里面,即便一行代碼都能體現出設計理念,比如一個有意義的命名也是設計的一種表現。

2.沒有重復代碼,如果你兩處代碼相同或者大部分重復,說明代碼不夠整潔,同時說明代碼沒有去做好設計。消除重復代碼意味著減少類和方法以及相關API。

3.代碼只做一件事,很多代碼由于想做太多事,目的不明確,意圖混亂,結果代碼變得很糟糕,代碼只做一件事,也稱單一職責,這個幾乎是很多軟件設計里面經常提到的一個警句,這個原則看似很簡單,但是實際上執行起來不是那么簡單,或者說,一時堅持這個原則很容易,難的是一直堅持這個原則,如果始終能踐行這個原則,代碼整潔度能達到質的飛躍。

4.代碼好閱讀,關于閱讀,Bjarne用“優雅”來形容,優雅意味著優美雅致,所以在他看來,代碼應該優美,給人以愉悅感,Grad也提到代碼應該像散文一樣優美,讓閱讀的人看完一段想看下一段,能很明顯的展現出解決問題的表達力和張力,閱讀者會不停的發出“啊哈,應該這樣來處理!”的感嘆。反之,如果代碼不好閱讀,閱讀者看完后還需要猜測所表達的意思,對所實現的功能持懷疑態度,甚至有心驚膽戰的心理,會在心里不停的反問:"不會吧,這都可以在線上運行?”我們在修改代碼或寫新代碼之前都要閱讀周邊代碼,如果閱讀代碼很難,則寫代碼也會很難,據統計讀代碼和寫代碼時間比例是10:1,編寫代碼的難度,取決于讀周邊代碼的難度。要想干得快,要想早點做完,要想輕松寫代碼,先讓代碼易讀吧。

5.代碼好修改,Dave提到整潔代碼應該可以讓其他開發者進行增補,也就是很容易進行功能的增加,畢竟很多系統代碼都要不停的迭代更新,需要基于原代碼進行增補,所以代碼的易修改就顯得格外的重要,試想如果一個開發者寫的代碼別人沒法修改或者不敢改,那你說這隱患有多大。我們經常嘴巴提到的系統可維護性,實際上說的更具體點,更多的指的是代碼的可修改方面。

?

將以上5點整潔代碼的畫像總結一句話:

?

?

體現設計理念,代碼不重復,只做一件事,好閱讀和修改!

審核編輯 黃宇

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

    關注

    2

    文章

    1501

    瀏覽量

    62017
  • 代碼
    +關注

    關注

    30

    文章

    4788

    瀏覽量

    68612
收藏 人收藏

    評論

    相關推薦

    循序漸進搭建復雜B端系統整潔架構

    時刻追趕潮流。在這樣一個時代背景下,軟件工程作為一門不起眼到有些枯燥的古老學科,似乎早已被開發者們遺忘在角落。作為一名技術人員我們自然應該時刻保持對前沿技術的追蹤,然而,當發生線上問題我們卻面對著成片的屎山代碼
    的頭像 發表于 11-18 17:11 ?1336次閱讀
    循序漸進搭建復雜B端系統<b class='flag-5'>整潔</b>架構

    Gmapping源代碼

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

    如何自動生成verilog代碼

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

    怎么提高verilog代碼編寫水平?

    ,共同進步。 歡迎加入FPGA技術微信交流群14群! 交流問題(一) Q:怎么提高verilog代碼編寫水平?Cpu 從事DFT工作。目前僅限于寫一些簡單模塊。自學的話如何提高verilog編寫水平
    發表于 09-25 20:05

    深入淺出系列之代碼可讀性

    ”,這是對我最大的鼓勵。 一、老生常談,到底啥是可讀性 一句話:見名知其義。有人說好的代碼必然有清晰完整的注釋,我不否認;也有人說代碼即注釋,是代碼簡潔之道的最高境界,我也不否認。但我
    的頭像 發表于 08-09 16:00 ?265次閱讀

    軟件設計哲學:新“代碼整潔之道

    工作三年以來一直對寫出設計優雅且可讀性較好的代碼抱有執念,最初接觸到的關于代碼整潔和軟件設計的書是《代碼整潔
    的頭像 發表于 07-22 12:18 ?245次閱讀
    軟件設計哲學:新“<b class='flag-5'>代碼</b><b class='flag-5'>整潔</b><b class='flag-5'>之道</b>”

    國內低代碼平臺推薦--萬界星空科技低代碼平臺

    代碼平臺是一種應用程序,它為編程提供圖形用戶界面,從而以極快的速度開發代碼,減少傳統編程工作。 這些工具有助于快速開發代碼,最大限度地減少手工編碼的工作量。這些平臺不僅有助于編碼,還有助于快速設置和部署。
    的頭像 發表于 07-18 15:39 ?299次閱讀
    國內低<b class='flag-5'>代碼</b>平臺推薦--萬界星空科技低<b class='flag-5'>代碼</b>平臺

    該如何提高代碼容錯率、降低代碼耦合度?

    提高RT-Thread代碼的容錯率和降低耦合度是確保代碼質量和可維護性的關鍵,下面列舉了幾種在編寫代碼時,提高代碼容錯率和降低耦合度的思路。讓我們一起來看看吧~一、提高
    的頭像 發表于 06-26 08:10 ?669次閱讀
    該如何提高<b class='flag-5'>代碼</b>容錯率、降低<b class='flag-5'>代碼</b>耦合度?

    FPGA能實現什么樣的算法?

    FPGA功能如此強大,請問用FPGA能實現或者比較適合實現什么樣的算法?
    發表于 05-26 20:18

    手柄控制代碼及使用方法

    手柄控制代碼及使用方法
    的頭像 發表于 05-15 10:19 ?1822次閱讀

    藍牙遙控代碼及使用

    藍牙遙控代碼及使用
    的頭像 發表于 05-15 10:15 ?845次閱讀

    如何提升代碼質量與效率的秘訣

    提高編程能力其實沒有捷徑,最佳方式就是多寫代碼。 不過,除了寫大量代碼,提升編程能力還需要大量閱讀別人寫的代碼
    的頭像 發表于 04-28 14:53 ?398次閱讀
    如何提升<b class='flag-5'>代碼</b>質量與效率的秘訣

    如何提升嵌入式C語言代碼可讀性

    接口是面向對象語言中的一個比較重要的概念,接口只對外部承諾實現該接口的實體可以完成什么樣的功能,但是不暴露實現的方式。這樣的好處是,實現者可以在不接觸接口使用者的代碼的情況下,對實現進行調整。
    發表于 04-11 11:30 ?356次閱讀
    如何提升嵌入式C語言<b class='flag-5'>代碼</b>可讀性

    g代碼和m代碼表示什么功能

    G代碼和M代碼是數控機床程序中常用的兩種指令代碼,用于控制數控機床的工作動作和運動方式。 G代碼是指控制機床工作動作的指令代碼,它是一種簡單
    的頭像 發表于 02-14 15:49 ?4344次閱讀

    BQ3568_代碼下載

    BQ3568_代碼下載
    的頭像 發表于 01-11 11:34 ?622次閱讀
    主站蜘蛛池模板: 女人大毛片一级毛片一| 久久精品人人爽人人爽| ccav在线永久免费看| 怡红院最新网址| 久久久xxx| 欧美性天天影院| 午夜剧场官网| 中文字幕一区二区三区视频在线| 亚洲偷偷| 日本免费色| 天天射天| 九九免费久久这里有精品23| 欧美就是色| 免费任我爽橹视频在线观看| 免费看18污黄| 久久久99精品免费观看精品| 免费观看成人欧美1314www| 在线视频亚洲色图| 国产免费成人在线视频| 视频网站黄| 三级特黄视频| 天堂网一区| 一级做a爰片久久毛片一| 干美女在线视频| 中文成人在线| 免费一级欧美片在线观免看| 精品精品国产高清a毛片牛牛| 一级一级毛片免费播放| aaa免费视频| 把小嫩嫩曰出白浆| 天堂在线观看中文字幕| 国产精品手机在线| 久久dvd| 在线黄色免费网站| www.天天色| 日本不卡视频一区二区三区| 久久综合精品视频| 婷婷色九月综合激情丁香| 日本免费网站观看| 狠狠的操| 色老头久久网|