RM新时代网站-首页

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

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

3天內不再提示

爛代碼你能忍嗎?優(yōu)秀的代碼VS糟糕的代碼

C語言編程基礎 ? 來源:未知 ? 作者:伍文輝 ? 2018-03-30 10:09 ? 次閱讀

可持續(xù)開發(fā)不僅在于項目架構設計,還與代碼質量密切相關,代碼的整潔度和質量成正比?!?Robert C. Martin, “Clean Code”

如果你還沒有發(fā)現(xiàn)代碼質量的區(qū)別,如果你從未見過優(yōu)秀的代碼,或者從未見過糟糕的代碼,那么本文將以直觀地對比,告訴你代碼質量究竟會有多大的區(qū)別。

[ 代碼量 ]

我們知道代碼量顯示著功能的復雜程度,例如Windows XP的代碼量超過2000萬行,Linux內核有1500萬行(2012年)。然而代碼量和功能數(shù)量之間并非線性關系。

優(yōu)秀的設計中,代碼量和功能數(shù)的關系是這樣的:

糟糕的設計中,代碼量和功能數(shù)的關系是這樣的:

優(yōu)秀的系統(tǒng)往往會有優(yōu)秀的結構設計:層次清晰、職責單一、模塊化,方便擴展或者復用。功能的添加往往只是在現(xiàn)有框架中添加少量代碼。

然而糟糕的設計中,層次混亂、互相耦合、難以閱讀,既難以復用又不易擴展。每當被要求添加功能時,不得不幾乎完整地實現(xiàn)整個功能的流程,并修復與原系統(tǒng)的所有兼容問題。

[ 注釋]

優(yōu)秀的代碼中,注釋是這樣的:

糟糕的代碼中,注釋是這樣的:

最愚蠢的程序員都能寫出機器能讀懂的代碼,而優(yōu)秀的程序員能寫出人可以讀懂的代碼。

程序的注釋是為了讓人讀得懂。多數(shù)優(yōu)秀的代碼中,注釋幾乎接近代碼行數(shù)的一半,描述函數(shù)功能、解釋參數(shù)配置、指出陷阱所在。而糟糕的代碼中不僅不含這些注釋,甚至會保留大量殘余代碼,可讀性差又難以重構。

[ 命名]

優(yōu)秀的代碼中,命名是這樣的:

糟糕的代碼中,命名是這樣的:

命名是為了讓代碼更加容易閱讀,使用規(guī)范的術語不僅更加易懂,同時也是開發(fā)者知識水平和開發(fā)經驗的表現(xiàn)。如果說以中文拼音命名顯得奇怪,那么直接以a, b, c, d命名的便會顯得可恨,誰記得你的a是神馬東西!

看一個經典的例子,字符串替換:

稍微有點Javascript常識的便會想到正則表達式:

何必拷貝這一堆的代碼給老板看呢?開發(fā)中確實有很多時候,直接拷貝代碼既能立竿見影地完成功能,又不會影響原有功能。但這樣的代碼多起來之后,萬一功能調整你便需要重新debug所有的副本?;ㄒ恍r間學習更優(yōu)雅的用法是值得的。

[ 函數(shù) ]

保持函數(shù)的短小,使你的代碼更加易讀,例如:

將復雜的邏輯分步驟完成。如果寫在一起將會是這樣的:

相信我,一旦你寫了這樣的函數(shù),它會隨著時間的推移變得越來越長,直到有一天,你也忘了其中的一段代碼到底是做什么的。

事實上,復雜的函數(shù)不僅可以按照步驟劃分,更應按照層次來細化。不要在一個函數(shù)中進行不同層次的操作,否則它會變得非常難懂。

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

    關注

    30

    文章

    4779

    瀏覽量

    68521
  • 程序員
    +關注

    關注

    4

    文章

    951

    瀏覽量

    29798

原文標題:沒有對比就沒有傷害,優(yōu)秀的代碼VS糟糕的代碼

文章出處:【微信號:xx-cyy,微信公眾號:C語言編程基礎】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    GPIO如何只更新通知代碼而不是替換舊代碼嗎?

    大家好,當我嘗試更改 GPIO 通知時遇到問題,然后我按下“生成代碼”。但它取代了我的舊代碼。告訴我如何只更新通知代碼而不是替換舊
    發(fā)表于 01-31 07:44

    參考代碼--俄羅斯游戲代碼

    使用C語言編程的參考代碼--俄羅斯游戲代碼
    發(fā)表于 05-20 17:01 ?14次下載

    的 Python 代碼優(yōu)雅又地道

    vs NP (pythonic vs non-pythonic)的討論。pythonic的代碼簡練,明確,優(yōu)雅,絕大部分時候執(zhí)行效率高。閱讀pythonic的代碼
    的頭像 發(fā)表于 03-06 10:35 ?3619次閱讀

    如何編寫無法維護的代碼代碼沒有重構的風險

    自己弄個鐵飯碗,因為除了之外,沒人維護寫的代碼。再而且,如果練就秘籍中的全部招式,那么
    的頭像 發(fā)表于 04-29 19:11 ?2597次閱讀

    什么是低代碼

    傳統(tǒng)的軟件開發(fā)方式需要漫長的時間才能完成應用程序的開發(fā)工作,這容易造成應用程序開發(fā)任務的堆積。為了提高應用程序的開發(fā)速度,現(xiàn)在出現(xiàn)了一種低代碼開發(fā)平臺。知道什么是低代碼開發(fā)嗎?知道
    發(fā)表于 05-09 15:26 ?1973次閱讀

    垃圾代碼應該怎么寫

    在 GitHub 上有一個新項目,它描述了「最佳垃圾代碼」的十九條關鍵準則。從變量命名到注釋編寫。這些準則將指導寫出最亮眼的代碼。 為了保持與原 GitHub 項目一致的風格,下文
    的頭像 發(fā)表于 01-18 11:08 ?1993次閱讀

    TouchGFX代碼框架以及如何添加用戶代碼

    和View之間的橋梁,View負責顯示,Model負責交互,這三大類撐起了TouchGFX的天空,可以再里面任意翱翔。 清除了MVP結構后,對代碼
    的頭像 發(fā)表于 01-18 11:28 ?2663次閱讀
    TouchGFX<b class='flag-5'>代碼</b>框架以及如何添加用戶<b class='flag-5'>代碼</b>

    九個單片機仿真優(yōu)秀案例及源代碼

    九個單片機仿真優(yōu)秀案例及源代碼
    發(fā)表于 03-17 09:13 ?161次下載
    九個單片機仿真<b class='flag-5'>優(yōu)秀</b>案例及源<b class='flag-5'>代碼</b>

    為什么有時候會寫出代碼

    本文的內容是最近我剛剛遇到的一個問題,問題代碼是我自己寫的,也是我自己寫單元測試的時候發(fā)現(xiàn)的,也是我自己修復的,修復完之后,我反思了一下:這樣的問題代碼,我實習的時候都寫不出來。 可是為什么我
    的頭像 發(fā)表于 08-27 10:23 ?1355次閱讀
    為什么有時候會寫出<b class='flag-5'>爛</b><b class='flag-5'>代碼</b>

    快速找到代碼運行最慢部分的編程神器

    天下武功,唯快不破。 編程也不例外,代碼跑的快,快速找出代碼慢的原因,的碼功就高。 今
    的頭像 發(fā)表于 10-13 16:40 ?1588次閱讀

    微軟最新寫代碼神器代碼之旅

    【導語】:CodeTour(代碼之旅)是微軟官方開發(fā)的 VS Code 擴展,允許記錄和回放代碼的演練和思路。 簡介 CodeTour 是一個 VS Code 插件,允許記錄和回放
    的頭像 發(fā)表于 10-26 10:00 ?1694次閱讀

    VS上配置MPI教程(含代碼

    VS上配置MPI教程(含代碼
    發(fā)表于 01-17 11:24 ?1次下載

    什么是整潔的代碼

    WTF/min是衡量代碼質量的唯一標準,Uncle Bob在書中稱糟糕代碼為沼澤(wading),這只突出了我們是糟糕代碼的受害者。國內有
    的頭像 發(fā)表于 01-30 10:45 ?514次閱讀

    靜態(tài)代碼塊、構造代碼塊、構造函數(shù)及普通代碼塊的執(zhí)行順序

    在Java中,靜態(tài)代碼塊、構造代碼塊、構造函數(shù)、普通代碼塊的執(zhí)行順序是一個筆試的考點,通過這篇文章希望大家徹底了解它們之間的執(zhí)行順序。 1、靜態(tài)
    的頭像 發(fā)表于 10-09 15:40 ?1324次閱讀
    靜態(tài)<b class='flag-5'>代碼</b>塊、構造<b class='flag-5'>代碼</b>塊、構造函數(shù)及普通<b class='flag-5'>代碼</b>塊的執(zhí)行順序

    vs中如何快速注釋多行代碼

    VS中,快速注釋多行代碼可以通過以下幾種方法實現(xiàn)。我將詳細介紹每種方法的步驟和應用場景。 方法一:塊注釋 塊注釋是一種常見的注釋多行代碼的方法。它適用于需要注釋大塊代碼的情況,可以方
    的頭像 發(fā)表于 11-22 10:26 ?1.6w次閱讀
    RM新时代网站-首页