精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

《代碼整潔之道》:5大基本要點

開發
常常有小伙伴推薦羅伯特·C·馬丁的《代碼整潔之道(Clean Code)》。今天我們就來了解一下這本書,它值不值得一看?

常常有小伙伴推薦羅伯特·C·馬丁的《代碼整潔之道(Clean Code)》。今天我們就來了解一下這本書,它值不值得一看?

[[316662]]

關于此書

《代碼整潔之道》:5大基本要點

《代碼整潔之道》出版于2008年,近年來,一直被列為“亞馬遜最暢銷的五本書”之一。本書作者被親切地稱為“Bob叔叔”,他也是《敏捷宣言》的原作者之一,資歷非常豐富。本書在Goodreads上平均評分為4.4(評分人數超13,000)。可以說,這是一本程序員的必讀書。

本文將本書精簡為五個要點。

1. 尊重抽象

《代碼整潔之道》:5大基本要點

圖片:abstraction(抽象)圖源: Abstruse Goose

《代碼整潔之道》中寫到:如果要確保函數僅做一件事,則需要確保每個函數的語句都位于同一抽象層次。

為說明這一點,馬丁用了以下示例(出自FitNesse):

  1. public String render() throws Exception 
  2.  
  3.  StringBuffer html =new StringBuffer("<hr"); 
  4.  if (size >0) 
  5.    html.append(" size="").append(size + 1).append("\""); 
  6.  html.append(">"); 
  7.  return html.toString(); 

在GitHub上查看no_abstraction.java源代碼

這里至少混合了兩個抽象層次。第一個是固定大小的hr標簽的高級概念,第二個是處理實際標簽構造的低級語法細節。為了說明這一點,對代碼進行更清晰地重構,如下所示:

  1. public String render() throws Exception 
  2.   HtmlTag hr =new HtmlTag("hr"); 
  3.   if (extraDashes >0) 
  4.     hr.addAttribute("size",  hrSize(extraDahses)); 
  5.    return hr.html(); 
  6.  } 
  7. private String hrSize(int height) 
  8.   int hrSize = height +1; 
  9.   return String.format("%d", hrSize); 

在GitHub上查看abstraction.java源代碼

注意:

  • Render()函數現在僅負責構建hr標簽
  • 將構建標簽的底層詳細信息的任務轉給HtmlTag模塊
  • 大小格式被抽象為獨立的函數

馬丁認為:

“分離抽象層次是重構最重要的功能之一,也是最難實現的功能之一。”

當然,在以后的代碼中,我會有更多考慮。

2. 整潔代碼關乎規則,要花大量精力

我不希望本文僅是列出編寫整潔代碼的要點和規則。對本書而言這也無甚作用——因為采取教條式的教學方法是遠遠不夠的。

相反,在本書中馬丁呼吁發展強烈的個人原則感,且不斷說明將“臟代碼”變整潔所需的努力和職責。本書將其稱為“代碼感”,它要求“嚴格使用艱難獲得整潔代碼的大量小技巧。”

“整潔代碼并非遵循一組規則編寫的。不可能因為學習一套金規玉律就成為軟件大師。專業精神和手工藝來自于推動規則形成的價值。” —羅伯特·C·馬丁(RobertC. Martin)

就個人而言,我沒什么自信,所以很喜歡這種說法。就連Bob叔叔都堅信編寫代碼是一份需要嚴肅自律的工作,要花費大量精力,真是極大的安慰。為了真正擅于整潔代碼,我們需要迭代我們作為程序員的個人開發以及代碼的開發。

3. 代碼盡量精簡

“函數的首要規則是體積小。第二規則是使其盡可能地變小。” ——羅伯特·C·馬丁

這里有兩個含義:

  • 函數本身應該簡短——幾乎不超過20行,大多數情況下少于10行
  • 函數應盡可能不要采用參數

簡潔函數能增加代碼的易讀性。這也使我們傾向于編寫功能單一高效的函數。

對于類,他也有類似的看法。他建議使用“職責”而非“代碼行”來衡量類的大小。即一個類應該只有一個職責。這就是所謂的“單一職責原則”(SRP)。

保持代碼簡短是“分劃”策略,如果一個大文件包含大量冗長而復雜的代碼,則可以將該文件分為多個模塊,將模塊分為多個函數,再將函數分為多個子函數,直至看到代碼邏輯和任務。

4. 編程是工藝

我時常認為,將編程喻為建筑和構造并不恰當。因為程序員不會做一個完整的設計,從頭開始建基,再一步步搭建直至完工。

編程的步驟是:先畫草圖,再反復添加細節。程序員要做的是修改、完善和擴展——這些都在各抽象層次上完成,直到軟件滿足要求為止。而軟件永遠不會真正完成。

這就是《代碼整潔之道》的中心思想。貫穿全書的要點是:軟件是一門藝術,做軟件就像“畫畫”。作者認為編程的本質是一門工藝。

圖片:“ Good Code(好代碼)” 網站:xkcd

但如何讓編程從單純地寫代碼變成“工藝”呢?

馬丁認為,程序員掌握的主要工具是持續重構和測試驅動開發(TDD)。兩者像硬幣的兩面般協同工作。來看一些概念:

重構是在不更改輸出的情況下調整現有計算機代碼結構的過程。

測試驅動開發是將需求轉換為特定測試用例,再添加代碼以使測試通過的過程。

因此,制作軟件的過程可能如下所示:

  • 編寫測試代碼以驗證所需但未實現的功能。
  • 編寫有效代碼(可能不整潔),并通過測試。
  • 逐步重構代碼(保證每次通過測試),使代碼在每次開發迭代中都更加清晰。
“不要想著一次性編程后系統就能正確、漂亮地運行。今日的任務僅僅是讓程序運行起來,而重構和擴展系統是明天的任務。這是迭代和增量敏捷的本質。”

——羅伯特·C·馬丁

因此,本書的中心思想是,整潔代碼是在開發和實踐中實現的,而非簡單地一口氣創建出來。

[[316663]]

來源:Pexels

5. 代碼本身清晰易讀

注釋很少卻清晰、表達力強的代碼優于注釋多的混亂、復雜的代碼。” ——羅伯特·C·馬丁

在“注釋、有意義的命名和格式“一章中,馬丁強烈主張代碼本身應該清晰易讀。示例:

  1. // Check to see if theemployee is eligible for full benefits 
  2. if ((employee.flags & HOURLY_FLAG) && 
  3.     (employee.age > 65)) 

將其重構為:

  1. if(employee.isEligibleForFullBenefits()) 

注意:

  • 刪除注釋
  • 條件邏輯封裝到一個方法中
  • 因為使用的是方法而不是獨立函數,因此可以使用實例變量,從而創建調用零參數的方法
  • 給該方法起一個描述性的名稱,使其職責更加明確

《代碼整潔之道》關于命名寫了整整一個章節,本質上是對Tim Ottinger規則的詳細說明。包括:

  • 設置可讀性高的名稱——例如,int elapsedTimeInDays,而不是in days
  • 使用讀得出來的名稱——例如,客戶而不是DtaRcrd102
  • 避免使用編碼——不要用前綴m_表示"members",也不要使用匈牙利表示法
  • 每個概念對應一個詞——不要fetch,retrieve,get多個概念對應一個詞

結語

《代碼整潔之道》中,并非每個想法都是Bob叔叔提出的,他在書中的各部分都承認了這一點。而這反而是使本書如此成功的一個原因——它是編程界智慧的匯聚,并附有實例。

如果要說一個小瑕疵,那就是與高層概念的章節相比,有關底層細節的章節有點少。“系統”章只有13頁,僅僅是“注釋“章的一半。但是,我懷疑減少對系統的重視,是為了將討論保留在他后來的書《架構整潔之道(CleanArchitecture)》中。

綜合考慮,這真的是目前最好的編程書籍之一,我會把該書放到我的2021年書單中。

責任編輯:趙寧寧 來源: 讀芯術
相關推薦

2012-08-01 09:38:17

代碼整潔

2012-08-01 09:23:31

代碼

2021-01-06 14:42:09

前端Typescript代碼

2021-03-07 09:19:31

React代碼整潔代碼的實踐

2020-12-09 10:49:33

代碼開發GitHub

2012-09-25 09:28:36

程序員代碼代碼整潔

2010-09-09 13:59:55

CSS

2025-06-27 06:38:19

2010-09-14 13:49:38

CSS代碼

2011-12-29 15:02:27

JavaScript

2019-05-14 09:31:16

架構整潔軟件編程范式

2011-12-02 10:19:24

CSS

2021-03-19 07:23:23

Go架構Go工程化

2017-11-10 12:43:43

整潔代碼開發程序員

2011-06-03 15:06:30

CSS

2020-02-29 08:57:12

智能工業物聯網IIoT

2011-06-03 15:21:51

CSS

2024-09-29 10:35:43

2011-03-31 14:55:04

2011-03-15 10:29:55

點贊
收藏

51CTO技術棧公眾號

国产精品毛片久久| 免费观看亚洲视频大全| 久久精品日产第一区二区三区高清版 | 日本不卡网站| 日本一区二区三区在线观看| 国产精品成av人在线视午夜片| 亚洲图片第一页| 亚洲一区电影| 欧美三级电影在线观看| 成人黄色大片网站| 在线视频二区| 99久久伊人精品| 成人久久一区二区| 美女又爽又黄免费视频| 欧美激情五月| 中文字幕日韩精品在线| 老司机午夜免费福利| 99热播精品免费| 亚洲福利视频一区二区| 亚洲精品国产精品国自产| 性生交生活影碟片| 秋霞午夜av一区二区三区| 欧美日韩爱爱视频| 成年人网站在线观看视频| 欧美日韩麻豆| 日韩免费成人网| www.涩涩涩| 亚洲一二三四| 亚洲福利视频导航| 国产精品免费看久久久无码| av男人的天堂在线| www亚洲一区| 国产精品一区二区三区在线观 | 成年女人在线看片| 亚洲三级在线看| 西游记1978| 免费在线高清av| 97se亚洲国产综合自在线不卡| 99久久精品久久久久久ai换脸| 中文字幕一区二区三区波野结| 性欧美xxxx大乳国产app| 欧美交受高潮1| 黄色一级片在线| 亚洲字幕久久| 久久国产精品99国产精| 91香蕉视频网| 99久久夜色精品国产亚洲96| 一级做a爰片久久毛片美女图片| 欧美夫妇交换xxx| 成人爽a毛片免费啪啪红桃视频| 日韩一级高清毛片| 日本黄色www| 一区二区网站| 亚洲大胆人体在线| 亚洲视频 中文字幕| www.爱久久| 亚洲第一精品电影| 视频免费在线观看| 欧美亚洲国产日韩| 亚洲精品小视频在线观看| 久久人人爽人人爽人人片| 秋霞影院一区二区三区| 亚洲精品一区中文| 欧美三级视频网站| 日韩中文首页| 草民午夜欧美限制a级福利片| caoporn91| 精品不卡视频| 日本韩国在线不卡| 中文字幕一区二区三区四区视频 | 91久久国产综合久久蜜月精品| 国产三级第一页| 国v精品久久久网| 精品国产乱码久久久久久郑州公司 | 国产乱码一区| 亚洲精品成人电影| 99在线精品视频| 日韩精品久久一区| 免费a级人成a大片在线观看| 亚洲精品日日夜夜| 成人黄色av片| 制服诱惑亚洲| 日韩丝袜情趣美女图片| 星空大象在线观看免费播放| 国产精品一线天粉嫩av| 久久精品国产亚洲精品| 国产亚洲欧美精品久久久久久| 一本色道久久综合亚洲精品高清 | 超碰成人福利| 亚洲天堂成人在线| 永久久久久久久| 亚洲女优在线| 91日本在线视频| 手机在线观看免费av| 久久久蜜桃精品| 男人天堂网站在线| 欧美韩国亚洲| 日韩欧美激情在线| 蜜桃无码一区二区三区| 亚洲视频在线免费| 日本久久久久久久久| 国产日本精品视频| 久久久国产精品午夜一区ai换脸| 中文字幕在线乱| 伊人久久视频| 欧美xxxx老人做受| 美国美女黄色片| 99国产精品久久久久久久| 国产免费一区二区三区在线能观看| 性中国xxx极品hd| 中文字幕av一区二区三区免费看| 欧美日韩福利在线| 成人av在线播放| 一本色道久久综合亚洲精品小说| www.99re7.com| 久久国产生活片100| 欧美二区三区在线| 免费在线看污片| 欧美精品高清视频| 亚洲最大成人综合网| 日韩天堂av| 91视频网页| 欧美成人hd| 欧美亚洲综合网| 蜜桃传媒一区二区亚洲av| 欧美午夜在线视频| 91久久国产精品| 在线视频二区| 欧美日韩一区不卡| 国产中年熟女高潮大集合| 国产欧美日本| 国产精品区一区| 日韩欧美一起| 欧美成人午夜电影| 毛片aaaaa| 国产九九视频一区二区三区| 亚洲一卡二卡三卡四卡无卡网站在线看| 巨茎人妖videos另类| 精品国产91洋老外米糕| 欧美日韩免费做爰视频| 国产一区二区三区精品视频| 一本一道久久a久久综合精品| 国产综合色在线观看| 亚洲欧洲视频在线| 激情视频网站在线观看| 久久夜色精品国产欧美乱极品| 自慰无码一区二区三区| 久久精品亚洲成在人线av网址| 色综合久久88色综合天天看泰| 99国产精品久久久久久久成人 | 国产精品亚洲视频| av磁力番号网| 91精品啪在线观看国产爱臀| 欧美福利视频在线观看| 刘亦菲毛片一区二区三区| 亚洲国产精品精华液网站| 国产a级片视频| 亚洲激情亚洲| 久久精彩视频| 性欧美hd调教| 日韩在线欧美在线| 99国产揄拍国产精品| 亚洲一区二区四区蜜桃| 亚洲 欧美 日韩在线| 亚洲制服av| 日韩一区国产在线观看| 欧美一级做a| 久久6精品影院| 五月天婷婷在线播放| 色噜噜狠狠一区二区三区果冻| 欧美a在线播放| 国产精品88av| 欧美老熟妇喷水| 首页国产精品| 国产精品 日韩| 一区二区三区四区日本视频| 中文字幕自拍vr一区二区三区| a天堂视频在线| 午夜日韩在线观看| 国产精品av久久久久久无| 韩国av一区二区三区在线观看 | 日韩av一区二区在线影视| 亚洲最新在线| 成人免费直播在线| 国产精品福利久久久| 成人影欧美片| 亚洲美女av网站| 国产精品亚洲lv粉色| 五月婷婷综合在线| 激情无码人妻又粗又大| 国产1区2区3区精品美女| 成年人黄色片视频| 综合精品久久| 日本视频一区在线观看| 91成人入口| 国产在线视频91| 性欧美xxx69hd高清| 久久夜色精品国产| 黄视频在线观看免费| 日韩三区在线观看| 欧美视频xxxx| 精品久久久精品| 久久福利免费视频| 久久久久久麻豆| 成人免费播放视频| 日本网站在线观看一区二区三区| 妞干网在线观看视频| 国产精品成人av| 欧美精品一区二区三区四区五区| 欧美成年网站| 国产精品一区二区三| 男人天堂视频在线观看| 欧美精品性视频| 在线看黄色av| 亚洲欧洲偷拍精品| 亚洲 精品 综合 精品 自拍| 日韩欧美一区二区在线视频| 中文字幕+乱码+中文字幕明步| 亚洲午夜久久久久久久久电影院| 视频国产一区二区| 国产欧美日韩综合精品一区二区| 88av在线播放| 国产传媒日韩欧美成人| 日韩av卡一卡二| 日韩国产精品久久| 无码人妻丰满熟妇区96| 伊人久久亚洲热| 国产欧美久久久久| 久久久人成影片免费观看| 亚洲激情图片| 国产一区二区电影在线观看| 久久久久se| 精品国产影院| 精品无人区一区二区三区竹菊| 亚洲小说春色综合另类电影| 亚洲自拍偷拍色片视频| 99精品女人在线观看免费视频| 国产欧美一区二区白浆黑人| 日韩漫画puputoon| 国产精品三级网站| 成人在线免费av| 国产精品美女无圣光视频| 日韩精品一区二区三区av| 日韩美女激情视频| 奇米777日韩| 国产精品高清免费在线观看| 中韩乱幕日产无线码一区| 国产精品狼人色视频一区| 日本欧美韩国| 国产精品男人爽免费视频1| www成人在线视频| 国产精品免费久久久| 欧美成人高清视频在线观看| 国产美女精彩久久| 成人午夜888| 97se在线视频| 老牛精品亚洲成av人片| 鲁丝一区鲁丝二区鲁丝三区| 欧美人妖在线| 一区二区三区观看| 欧美一区二区三区久久精品| 热久久最新网址| 亚洲福利专区| 99草草国产熟女视频在线| 免费观看久久久4p| 91精品国产三级| 成人18视频在线播放| 亚洲一级中文字幕| 国产精品灌醉下药二区| 国产a免费视频| 精品久久久久久久久久久久久 | 久久99国产精品99久久| 国产精品密蕾丝视频下载| 神马影院一区二区| 亚洲经典一区| 国产97在线 | 亚洲| 日本欧美在线观看| 中文字幕人妻熟女人妻a片| 91性感美女视频| 国产精品视频看看| 五月天久久比比资源色| 最近中文字幕av| 欧美videossexotv100| 视频福利在线| 日日噜噜噜夜夜爽亚洲精品| 国内在线视频| 国产精品久久久久不卡| 日韩一区二区三区高清在线观看| 久久伊人一区二区| 91精品国产91久久久久久黑人| 久久综合久久网| 美女免费视频一区| 国产精品一区二区无码对白| 欧美国产欧美亚州国产日韩mv天天看完整 | 亚洲欧美日韩视频一区| 最新97超碰在线| 午夜精品蜜臀一区二区三区免费| 97se综合| 成人资源av| 久久精品国产68国产精品亚洲| 69sex久久精品国产麻豆| 美女视频黄 久久| v天堂中文在线| 亚洲日穴在线视频| 波多野结衣家庭主妇| 欧美电影免费观看完整版| 成人精品一区二区三区免费| 久久久视频精品| 91精品亚洲一区在线观看| 欧美日韩最好看的视频| 午夜久久久久| 中文字幕亚洲影院| 国产欧美日韩另类一区| 国产精品xxxx喷水欧美| 欧美丰满高潮xxxx喷水动漫| 国模吧精品人体gogo| 国模吧一区二区| 免费精品一区| 一区二区三区不卡在线| 日韩1区2区日韩1区2区| 欧美一区二区三区成人精品| 一区二区视频在线看| 国产一区二区三区黄片| 伊人久久大香线蕉av一区二区| 小视频免费在线观看| 国产一区免费在线观看| 女人香蕉久久**毛片精品| 亚洲精品久久久中文字幕| 国产亚洲一区字幕| 欧美另类一区二区| 亚洲第一精品福利| 成人av影院在线观看| 99蜜桃在线观看免费视频网站| 欧美 日韩 国产 一区| 午夜久久福利视频| 国产精品家庭影院| 日批视频免费观看| 亚洲天堂视频在线观看| 日韩电影免费观| 欧美二区在线看| 天堂在线亚洲视频| 中文字幕在线看高清电影| 欧美特级www| 日韩a级作爱片一二三区免费观看| 97免费在线视频| 日韩超碰人人爽人人做人人添| 久久亚洲中文字幕无码| 99久久婷婷国产综合精品电影| 99免费在线观看| 日韩的一区二区| 日韩精品99| 亚洲高清视频一区| 精品一区二区三区的国产在线播放 | 日韩国产一区三区| 国产在线xxx| 国产另类第一区| 亚洲女同同性videoxma| a级在线免费观看| 欧美三级蜜桃2在线观看| 黄视频网站在线| 97久久天天综合色天天综合色hd| 午夜国产欧美理论在线播放 | 日本中文字幕片| 欧美国产综合色视频| 国产一区二区三区在线观看| 久久福利网址导航| 里番精品3d一二三区| 少妇人妻互换不带套| 中文字幕一区二区在线播放| 国产激情视频在线播放| 韩国一区二区电影| 精品国产一区二区三区小蝌蚪| 国产又大又黄又粗又爽| 亚洲精品视频一区| 婷婷婷国产在线视频| 国产精品亚洲аv天堂网| 欧美福利视频| 男人天堂av电影| 91精品国模一区二区三区| 91禁在线看| 亚洲欧美一区二区原创| 国产suv一区二区三区88区| www.国产色| 俺也去精品视频在线观看| 国产精品久av福利在线观看| 亚洲视频在线a| 一区二区三区中文字幕| 人成在线免费视频| 91美女福利视频高清| 亚洲免费影院| 免费无码毛片一区二区app| 亚洲国产欧美日韩精品| 欧美91在线|欧美| 欧美 日韩 亚洲 一区| 国产精品毛片久久久久久| 无码国产色欲xxxx视频| 91在线看www| 日韩vs国产vs欧美| 日韩免费不卡视频| 日韩一区二区三区xxxx|