<讀書筆記> 代碼整潔之道

2020-12-12 電子產品世界

  概述

本文引用地址:http://www.eepw.com.cn/article/201608/294841.htm

  1、本文檔的內容主要來源於書籍《代碼整潔之道》作者Robert C.Martin,屬於讀書筆記。

  2、軟體質量,不僅依賴於架構和項目管理,而且與代碼質量緊密相關,本書提出一種,代碼質量與整潔成正比的觀點,並給出了一系列行之有效的整潔代碼操作實踐,只要遵循這些規則,就可以編寫出整潔的代碼,從而提升代碼質量。

  3、該書介紹的規則均來自於作者多年的實踐經驗,涵蓋從命名到重構的多個編程方面,具有很好的學習和借鑑價值。

  4、習藝要有二:知和行。你應當學習有關規則、模式和實踐的知識,窮盡應知之事,並且對其了如指掌,通過刻苦實踐掌握它!

  前言

  學習整潔代碼很難,它不止於要求你掌握原則和模式,你還得在上面下功夫,並自行實踐,體驗失敗。你須觀察他人如何實踐與失敗,怎樣蹣跚學步,再轉頭學習他們的路數,。

  本書要求你多用信息,多用功,而且非常用功。如何用功?-大量閱讀代碼,並琢磨代碼好在什麼地方,壞在什麼地方。

  本書大概分為三部分:原則、模式和實踐。

  一、 使用有意義的命名

  1、名副其實

  注意命名,一旦發現有更好的名稱就換掉舊的,這麼做閱讀的人會更開心

  名稱本身應該能解釋其含義,無需注釋就能看懂是最佳。比如

  int d;//消失時間,以日計

  int elapsedTimeInDays;

  前者名稱沒有任何含義,在程序中使用時看不出這個變量的實際作用,需要對應注釋才能看懂,因此遠不如後者的名稱好!

  2、避免誤導

  程式設計師必須避免留下掩藏代碼本意的錯誤線索,避免使用與本意相悖的詞。

  提防使用細節之處差別較小的名稱

  使用相同的拼寫方式,前後拼寫不一致(大小寫不同),就是誤導。在使用編輯器名稱自動補全功能時,拼寫相近的變量容易引起誤選。

  避免使用小寫字母l和大寫字母O作為變量名稱,易與1和0混淆

  3、做有意義的區分

  避免以數字系列命名,其無法提供正確的信息和導向作者意圖的線索。

  不要使用意義相近的名稱,比如ProductInfo和ProductData變量不同,意思一樣,容易引起意義混淆

  不要使用冗餘信息,比如NameString,難道Name會是一個浮點數嗎?如果是,就不該使用Name命名。

  4、使用讀的出來的名稱

  人類善於記憶和使用單詞,如果名稱無法閱讀或者發音,就不是一個好名稱,討論和交流時也難以表達。

  比如函數名稱為:genymdhms()//生成日期,年月日時分秒。

  不要使用傻乎乎的自造詞,而要使用恰當的英語單詞

  5、使用可搜索的名稱

  比如字母e,f等就不是一個好的變量名,其是英文常用字母,不方便搜索,

  單字母名稱僅限於本地局部變量使用,名稱長短應該與作用域大小相對應

  如果程序中多出使用相同數字,實現相同功能,則需要使用宏定義變量代替。

  比如WORK_DAYS_PER_WEEK就比數字5好搜索,也更能體現作者意圖

  6、避免使用編碼

  無需把類型和作用域編進名稱,這樣只會自找麻煩,既不便發音,也容易拼錯,對解決問題毫無幫助。

  匈牙利標記法,破壞了不編碼的規則,不應該採用。

  也不必使用成員前綴,應該把類和函數做的足夠小,同時使用可以高亮和顏色標出成員的編輯環境。(Keil,notepad++都支持)。

  7、避免思維映射

  不應當讓讀者把你腦中的名稱翻譯成他們熟知的名稱,這個問題常見於選擇使用問題領域的術語還是解決方案領域的術語時。

  在作為局部變量時,並且名稱沒有衝突時,可以採用i,j,k作為循環變量。

  專業程式設計師善用其能,編寫能讓他人理解的代碼

  8、類名

  類名應該是名稱或者名詞短語,例如Customer、Account,避免使用Manager、Data、Info這樣的類名,其不應該是動詞。

  9、方法名

  方法名應該是動詞或者動詞短語,比如postPayment、deletePage或s**e,屬性訪問應該加上set、get、is前綴

  10、每個概念對應一個詞

  給每個抽象概念選用一個詞,並且一以貫之。比如使用fetch、retrieve、get在多個類的中同種方法命名,就容易引起混淆。

  11、別用雙關語

  避免將以此用於不同目的,同一術語用於不同概念就是雙關語了。

  比如多個類中都有add方法,該方法通過增加或者連結兩個現存值來獲得新值,如果一個新類的含義是,把單個參數放到群集(collection)中,使用add名稱,雖然保持了名稱一致,你是含義卻不同,應該使用insert才對。

  12、使用解決方案領域的名稱

  因為只有程式設計師才會讀取你的代碼,因此名稱應該選擇解決方案領域的名稱,而不是問題設計領域的名稱。比如名稱AccountVisitor就比JobQueue富有意義。

  13、使用源自所涉及問題領域的名稱

  當不能使用程式設計師所熟悉的術語命名時,就應該採用所涉及問題領域的名稱

  與所涉問題領域更加貼近的代碼,應當採用源自問題領域的名稱

  14、添加有意義的語境

  很少有名稱能夠自我說明-多數都不能,因此需要使用良好命名的類、函數來放置名稱,給讀者提供語境。

  比如添加前綴addrFirstName、addrLastName、addrState,就可以提供語境,這些變量屬於地址範圍。更好的做法是,創建一個名稱為Address的類,來存放這些相關變量。

  語境的增強也讓算法能夠通過分解為更小的函數而變得乾淨利索。

  15、不要添加沒有意義的語境

  比如應用(Gas Station Deluxe)簡稱為GSD,因此為每個函數、類、變量增加同樣的前綴就GSD命名就不是一個好點子。

  Address是個好名稱,但是如果需要與MAC地址、埠地址或Web地址區分,應當使用PostalAddress、MAC、URI,這樣的名稱更為精確。

  16、總結

  取名字最難地方在於需要良好的描述技巧和共有的文化背景

  試試上面的規則,看你的代碼的可讀性是否有所提升。如果維護別人的代碼,使用重構工具來解決問題,效果也好立竿見影,而且會持續下去。

相關焦點

  • 《代碼整潔之道(Clean Code)》讀書筆記
    注釋可以用來放大某種看似不合理之物的重要性8. 公共 API 注釋4. 壞注釋1. 喃喃自語。應該過程需要就添加注釋,是無畏之舉2. 多餘的注釋。代碼清晰明了,讀注釋比讀代碼花的時間長3.代碼整潔,不容易被錯誤處理搞亂2. 顯示 try catch finally 語句1. 可以幫你定義代碼的用戶應該期待什麼,無論 try 代碼塊中執行的代碼出什麼錯都一樣2.
  • 《代碼整潔之道》精讀與演繹】之一 讓代碼比你來時更乾淨
    本文引用地址:http://www.eepw.com.cn/article/201608/295974.htm  ——《代碼整潔之道》作者 RobertC.Martin,於SD West 2007技術大會  一、系列文章前言  敲完上面這段文字的時候,心裡在想,一個剛踏入編程生涯的新人
  • 《代碼整潔之道》:5大基本要點
    全文共3257字,預計學習時長10分鐘評論區常常有小夥伴推薦羅伯特·C·馬丁的《代碼整潔之道(Clean Code)》。今天我們就來了解一下這本書,它值不值得一看?關於此書《代碼整潔之道》出版於2008年,近年來,一直被列為「亞馬遜最暢銷的五本書」之一。本書作者被親切地稱為「Bob叔叔」,他也是《敏捷宣言》的原作者之一,資歷非常豐富。本書在Goodreads上平均評分為4.4(評分人數超13,000)。可以說,這是一本程式設計師的必讀書。
  • 《代碼整潔之道》精讀與演繹】之四 優秀代碼的格式準則
    《代碼整潔之道》這本書提出了一個觀點:代碼質量與其整潔度成正比,乾淨的代碼,既在質量上可靠,也為後期維護、升級奠定了良好基礎。書中介紹的規則均來自作者多年的實踐經驗,涵蓋從命名到重構的多個編程方面,雖為一「家」之言,然誠有可資借鑑的價值。  但我們知道,很多時候,理想很豐滿,現實很骨感,也知道人在江湖,身不由己。
  • 【《代碼整潔之道》精讀與演繹】之五 整潔類的書寫準則
    《代碼整潔之道》這本書提出了一個觀點:代碼質量與其整潔度成正比,乾淨的代碼,既在質量上可靠,也為後期維護、升級奠定了良好基礎。書中介紹的規則均來自作者多年的實踐經驗,涵蓋從命名到重構的多個編程方面,雖為一「家」之言,然誠有可資借鑑的價值。  但我們知道,很多時候,理想很豐滿,現實很骨感,也知道人在江湖,身不由己。
  • 代碼整潔之道的 7 個方法
    本文代碼示例均使用 JavaScript。我發現但凡是可讀的代碼必定是可維護的。作為一名開發人員,我的目標是編寫高質量的代碼。團隊中的每個開發人員,不管他/她的技術水平如何,都必須能夠通過閱讀理解我所寫的代碼。代碼的可讀性有助於年輕的開發人員編寫代碼時更加自信。
  • 【《代碼整潔之道》精讀與演繹】之二 高質量代碼的命名法則
    本文引用地址:http://www.eepw.com.cn/article/201608/296112.htm  一、引言  《代碼整潔之道》這本書提出了一個觀點:代碼質量與其整潔度成正比,乾淨的代碼,既在質量上可靠,也為後期維護、升級奠定了良好基礎。
  • JavaScript 代碼整潔之道(中)
    目錄概述變量函數對象和數據結構類測試並發錯誤處理格式注釋類單一職責原則 (SRP)正如《代碼整潔之道extends Mammal {    constructor(age, furColor, languageSpoken) {        super(age, furColor);        this.languageSpoken = languageSpoken;    }    speak() {}}使用方法鏈在這裡我的意見與《代碼整潔之道
  • 代碼整潔之道-編寫 Pythonic 代碼
    對此呢,我特意收集了一些適合所有學習 Python 的人,代碼整潔之道。寫出 Pythonic 代碼談到規範首先想到就是 Python 有名的 PEP8 代碼規範文檔,它定義了編寫Pythonic代碼的最佳實踐。可以在 https://www.python.org/dev/peps/pep-0008/ 上查看。
  • (轉)《Google軟體測試之道》讀書筆記(大綱)
    《Google軟體測試之道》這本書想必很多做測試的人都聽過
  • 讀書筆記怎麼寫?教你繪製思維導圖製作讀書筆記
    傳統的讀書筆記指讀書時把文中精彩的部分整理出來,或把認為對自己有讀書心得的內容記錄下來。適當的做一些讀書筆記可以幫助自己理解書籍內容和訓練自身閱讀能力,還能從側面加深對書籍的記憶力。你可曾想過用思維導圖製作讀書筆記?
  • 《法律之道》讀書筆記
    《法律之道》讀書筆記ps:下文的p-x,除非特別標明其它論文或著作時代表頁碼,均指原文的段落序號,eg:p1=原文第1段。本筆記的譯文摘自姚遠老師譯本,載《廈門大學法學評論》總第二十六輯。(參見姚遠譯《法律之道》(載廈大法評)160頁注1,又見p13,《霍姆斯法律理論的建構》,姚遠)1.2.3、對霍姆斯法律預測理論的批評:a、法律預測理論無法解釋法官的行為,對一個法官來說,法律不可能是去預測他自己怎樣判決,法官對於法律必須持不同程度的內在視角。
  • 學生該如何做讀書筆記?
    讀書筆記的內涵非常廣泛,有讀書時做的標記、劃線,有隨手記錄下的幾個字的想法,也有兩三句話的感悟,更有讀書以後寫的幾百字甚至上千字的讀書筆記。因此,不管是隨手記錄靈感,還是讀完後的長篇總結,寫讀書筆記都要注意兩個方面:第一,學會結構化的讀書筆記方法試想,你打開一本紙質書籍,發現裡面都是各種筆記,你肯定認為這個人讀的非常認真,能做這麼多筆記,一定學到了很多知識。但再仔細一看,你發現有很多混亂的筆記方式。
  • 讀書筆記大全:英語讀書筆記
    讀書筆記大全:英語讀書筆記 2013-08-22 11:43 來源:讀書筆記網 作者:
  • 《重構:改善既有代碼的設計》讀書筆記
    前言: 捧讀像這一類的書對於自己來說總帶著一些神聖感,感謝自己並沒有被這麼宏大的主題嚇退,看完了這裡分享輸出一下自己的筆記。一、理解重構什麼是重構?改進軟體的設計當人們只為短期目的而修改代碼時,他們經常沒有完全理解架構的整體設計。於是代碼逐漸失去了自己的結構。程式設計師越來越難以通過閱讀代碼來理解原來的設計。代碼結構的流失有累積效應。越難看出代碼所代表的設計企圖,就越難以保護其設計,於是設計就腐敗得越快。
  • 看到別人厚厚的讀書筆記就羨慕,如何做好真正的讀書筆記?
    生活中看到不少閱讀者會在讀完一本書後,寫下自己的讀書筆記,然後坐下來翻看自己厚厚的筆記本的時候,都會十分羨慕這種姿態。我經常做讀書筆記就是摘抄原文,其實那不算是真正的讀書筆記。心裡不免會犯嘀咕:讀書筆記到底怎麼做呢?摘抄原文嗎?做讀書筆記有什麼意義和價值呢?
  • 《重構:改善既有代碼的設計》讀書筆記(一)
    這個系列文章會記錄關於這本書的讀書筆記,自己的思考都會在段落前面備註(思考:)。對代碼要有敬畏,教條是教條,重要的是自己的思考、實踐和從中收穫(與代碼的一種默契、與這種場景的合拍,找到一種知音的感覺)。
  • 讀書筆記大全:活著讀書筆記
    讀書筆記大全:活著讀書筆記 2013-08-22 11:56 來源:讀書筆記網 作者:
  • 讀書筆記大全:怎樣做讀書筆記
    讀書筆記大全:怎樣做讀書筆記 2013-08-22 11:32 來源:讀書筆記網 作者:
  • 讀書筆記大全:讀書筆記100字
    新東方網整理中外名著讀書筆記大全,將好的讀書筆記摘抄,大家可以參考範文,總結讀書筆記格式,了解讀書筆記怎麼寫。更多內容推薦: 讀書筆記大全:中外名著讀書筆記摘抄1031篇1101篇讀書筆記大全告訴你讀書筆記該怎麼寫