編寫可讀代碼的藝術(shù)

出版時間:2012-7-10  出版社:機械工業(yè)出版社華章公司  作者:Boswell, D.,Foucher, T.  頁數(shù):178  譯者:尹哲,鄭秀雯  
Tag標簽:無  

前言

我們曾經(jīng)在非常成功的軟件公司中和出色的工程師一起工作,然而我們所遇到的代碼仍有很大的改進空間。實際上,我們曾見到一些很難看的代碼,你可能也見過。    但是當我們看到寫得很漂亮的代碼時,會很受啟發(fā)。好代碼會很明確告訴你它在做什么。使用它會很有趣,并且會鼓勵你把自己的代碼寫得更好。    本書旨在幫助你把代碼寫得更好。當我們說“代碼”時,指的就是你在編輯器里面要寫的一行一行的代碼。我們不會討論項目的整體架構(gòu),或者所選擇的設(shè)計模式。當然那些很重要,但我們的經(jīng)驗是程序員的日常工作的大部分時間都花在一些“基本”的事情上,像是給變量命名、寫循環(huán)以及在函數(shù)級別解決問題。并且這其中很大的一部分是閱讀和編輯已有的代碼。我們希望本書對你每天的編程工作有很多幫助,并且希望你把本書推薦給你團隊中的每個人。本書內(nèi)容安排    這是一本關(guān)于如何編寫具有高可讀性代碼的書。本書的關(guān)鍵思想是代碼應該寫得容易理解。確切地說,使別人用最短的時間理解你的代碼。    本書解釋了這種思想,并且用不同語言的大量例子來講解,包括C++、Python、JavaScript和Java。我們避免使用某種高級的語言特性,所以即使你不是對所有的語言都了解,也能很容易看懂。(以我們的經(jīng)驗,反正可讀性的大部分概念都是和語言不相關(guān)的。)每一章都會深入編程的某個方面來討論如何使代碼更容易理解。本書分成四部分:?表面層次上的改進  命名、注釋以及審美——可以用于代碼庫每一行的小提示。?簡化循環(huán)和邏輯  在程序中定義循環(huán)、邏輯和變量,從而使得代碼更容易理解。?重新組織你的代碼  在更高層次上組織大的代碼塊以及在功能層次上解決問題的方法。?精選話題  把“易于理解”的思想應用于測試以及大數(shù)據(jù)結(jié)構(gòu)代碼的例子。如何閱讀本書    我們希望本書讀起來愉快而又輕松。我們希望大部分讀者在一兩周之內(nèi)讀完全書。章節(jié)是按照"難度"來排序的:基本的話題在前面,更高級的話題在后面。然而,每章都是獨立的。因此如果你想跳著讀也可以。代碼示例的使用    本書旨在幫助你完成你的工作。一般來說,可以在程序和文檔中使用本書的代碼。如果你復制了代碼的關(guān)鍵部分,那么你就需要聯(lián)系我們獲得許可。例如,利用本書的幾段代碼編寫程序是不需要許可的。售賣或出版書中示例的D-ROM需要我們的許可。引用本書回答問題以及引用示例代碼不需要我們的許可。將本書的大量示例代碼用于你的產(chǎn)品文檔中需要許可。

內(nèi)容概要

  細節(jié)決定成敗,思路清晰、言簡意賅的代碼讓程序員一目了然;而格式凌亂、拖沓冗長的代碼讓程序員一頭霧水。除了可以正確運行以外,優(yōu)秀的代碼必須具備良好的可讀性,編寫的代碼要使其他人能在最短的時間內(nèi)理解才行。本書旨在強調(diào)代碼對人的友好性和可讀性。
本書關(guān)注編碼的細節(jié),總結(jié)了很多提高代碼可讀性的小技巧,看似都微不足道,但是對于整個軟件系統(tǒng)的開發(fā)而言,它們與宏觀的架構(gòu)決策、設(shè)計思想、指導原則同樣重要。編碼不僅僅只是一種技術(shù),也是一門藝術(shù),編寫可讀性高的代碼尤其如此。如果你要成為一位優(yōu)秀的程序員,要想開發(fā)出高質(zhì)量的軟件系統(tǒng),必須從細處著手,做到內(nèi)外兼修,本書將為你提供有效的指導。
  ·簡化命名、注釋和格式的方法,使每行代碼都言簡意賅。
  ·梳理程序中的循環(huán)、邏輯和變量來減小復雜度并理清思路。
  ·在函數(shù)級別解決問題,例如重新組織代碼塊,使其一次只做一件事。
  ·編寫有效的測試代碼,使其全面而簡潔,同時可讀性更高。

作者簡介

  Dustin
Boswell畢業(yè)于加州理工大學,資深軟件工程師,在Google就職多年,負責Web爬蟲和程序設(shè)計相關(guān)的工作。他專注于前端、后端,服務器架構(gòu)、機器學習、大數(shù)據(jù)、系統(tǒng)和網(wǎng)站等技術(shù)領(lǐng)域的研究和實踐,經(jīng)驗十分豐富。他現(xiàn)在是MyLikes的軟件工程師。
  Trevor
Foucher資深軟件工程師和技術(shù)經(jīng)理,先后在Microsoft和Google工作了數(shù)十年,在Microsoft擔任軟件工程師、技術(shù)經(jīng)理以及安全產(chǎn)品技術(shù)主管,在Google從事廣告應用開發(fā)和搜索基礎(chǔ)結(jié)構(gòu)研發(fā)相關(guān)的工作。

書籍目錄

前言
第1章 代碼應當易于理解
  是什么讓代碼變得“更好”
  可讀性基本定理
  總是越小越好嗎
  理解代碼所需的時間是否與其他目標有沖突
  最難的部分
第一部分 表面層次的改進
 第2章 把信息裝到名字里
  選擇專業(yè)的詞
  避免像tmp和retval這樣泛泛的名字
  用具體的名字代替抽象的名字
  為名字附帶更多信息
  名字應該有多長
  利用名字的格式來傳遞含義
  總結(jié)
 第3章 不會誤解的名字
  例子:Filter()
  例子:Clip(text, length)
  推薦用first和last來表示包含的范圍
  推薦用begin和end來表示包含/排除范圍
  給布爾值命名
  與使用者的期望相匹配
  例子:如何權(quán)衡多個備選名字
  總結(jié)
 第4章 審美
  為什么審美這么重要
  重新安排換行來保持一致和緊湊
  用方法來整理不規(guī)則的東西
  在需要時使用列對齊
  選一個有意義的順序,始終一致地使用它
  把聲明按塊組織起來
  把代碼分成“段落”
  個人風格與一致性
  總結(jié)
 第5章 該寫什么樣的注釋
  什么不需要注釋
  記錄你的思想
  站在讀者的角度
  最后的思考——克服“作者心理阻滯”
  總結(jié)
 第6章 寫出言簡意賅的注釋
  讓注釋保持緊湊
  避免使用不明確的代詞
  潤色粗糙的句子
  精確地描述函數(shù)的行為
  用輸入/輸出例子來說明特別的情況
  聲明代碼的意圖
  “具名函數(shù)參數(shù)”的注釋
  采用信息含量高的詞
  總結(jié)
第二部分 簡化循環(huán)和邏輯
 第7章 把控制流變得易讀
  條件語句中參數(shù)的順序
  if/else語句塊的順序
  ?:條件表達式(又名“三目運算符”)
  避免do/while循環(huán)
  從函數(shù)中提前返回
  臭名昭著的goto
  最小化嵌套
  你能理解執(zhí)行的流程嗎
  總結(jié)
 第8章 拆分超長的表達式
  用做解釋的變量
  總結(jié)變量
  使用德摩根定理
  濫用短路邏輯
  例子:與復雜的邏輯戰(zhàn)斗
  拆分巨大的語句
  另一個簡化表達式的創(chuàng)意方法
  總結(jié)
 第9章 變量與可讀性
  減少變量
  縮小變量的作用域
  只寫一次的變量更好
  最后的例子
  總結(jié)
第三部分 重新組織代碼
 第10章 抽取不相關(guān)的子問題
  介紹性的例子:findClosestLocation()
  純工具代碼
  其他多用途代碼
  創(chuàng)建大量通用代碼
  項目專有的功能
  簡化已有接口
  按需重塑接口
  過猶不及
  總結(jié)
 第11章 一次只做一件事
  任務可以很小
  從對象中抽取值
  更大型的例子
  總結(jié)
 第12章 把想法變成代碼
  清楚地描述邏輯
  了解函數(shù)庫是有幫助的
  把這個方法應用于更大的問題
  總結(jié)
 第13章 少寫代碼
  別費神實現(xiàn)那個功能——你不會需要它
  質(zhì)疑和拆分你的需求
  保持小代碼庫
  熟悉你周邊的庫
  例子:使用Unix工具而非編寫代碼
  總結(jié)
第四部分 精選話題
 第14章 測試與可讀性
  使測試易于閱讀和維護
  這段測試什么地方不對
  使這個測試更可讀
  讓錯誤消息具有可讀性
  選擇好的測試輸入
  為測試函數(shù)命名
  那個測試有什么地方不對
  對測試較好的開發(fā)方式
  走得太遠
  總結(jié)
 第15章 設(shè)計并改進“分鐘/小時計數(shù)器”
  問題
  定義類接口
  嘗試1:一個幼稚的方案
  嘗試2:傳送帶設(shè)計方案
  嘗試3:時間桶設(shè)計方案
  比較三種方案
  總結(jié)
  附錄 深入閱讀

章節(jié)摘錄

版權(quán)頁:   插圖:   然后,隨著項目的增長,你的目錄中加進了越來越多的源文件。很快你就需要多個目錄來組織它們了。很難再記得哪個函數(shù)調(diào)用了哪個函數(shù),而且跟蹤bug也要做多一點的工作。 最后,你就有了很多源代碼分布在很多不同的目錄中。項目很大,沒有一個人自己全部理解它。增加新功能變得很痛苦,而且使用這些代碼很費力還令人不快。 我們所描述的是宇宙的自然法則——隨著任何坐標系統(tǒng)的增長,把它粘合在一起所需的復雜度增長得更快。 最好的解決辦法就是"讓你的代碼庫越小,越輕量級越好",就算你的項目在增長。那么你就要: ?創(chuàng)建越多越好的"工具"代碼來減少重復代碼(見第10章)。 ?減少無用代碼或沒有用的功能(見下圖)。 ?讓你的項目保持分開的子項目狀態(tài)。 ?總的來說,要小心代碼的"重量"。讓它保持又輕又靈。 園丁經(jīng)常修剪植物以讓它們活著并且生長。同樣地,修剪掉礙事和沒用的代碼也是個好主意。 一旦代碼寫好后,程序員往往不情愿刪除它,因為它代表很多實際的工作量。刪掉它可能意味著承認在上面所花的時間就是浪費。不要這么想!這是一個有創(chuàng)造性的領(lǐng)域——攝影家、作者和電影制版人也不會保留他們所有的工作。 刪除獨立的函數(shù)很簡單,但有時"無用代碼"實際上交織在你的項目中,你并不知情。下面是一些例子: ?你一開始把系統(tǒng)設(shè)計成能處理多語言文件名,現(xiàn)在代碼中到處都充滿了轉(zhuǎn)換代碼。然而,那段代碼不能很好地工作,實現(xiàn)上你的程序也從來沒有用到過任何多語言文件名。 ?為什么不刪除這個功能呢? ?你希望你的程序在內(nèi)存耗盡的情況下仍能工作,因此你有很多耍小聰明的邏輯來試著從內(nèi)存耗盡的情況下恢復。這是個好主意,但在實踐中,當系統(tǒng)內(nèi)存耗盡時,你的程序?qū)⒆兂刹环€(wěn)定的僵尸——所有的核心功能都不可用,再點一下鼠標它就死了。 為什么不通過一句簡單的提示"系統(tǒng)內(nèi)存不足,抱歉"并刪除所有內(nèi)存不足的代碼,終止程序呢?

編輯推薦

《編寫可讀代碼的藝術(shù)》寫出的代碼能讓人快速理解、輕松維護、容易擴展的程序員才是專業(yè)的程序員?!毒帉懣勺x代碼的藝術(shù)》簡化命名、注釋和格式的方法,使每行代碼都言簡意賅;梳理程序中的循環(huán)、邏輯和變量來減小復雜度并理清思路;編寫有效的測試代碼,使其全面而簡潔,同時可讀性更高。

名人推薦

"軟件開發(fā)的一個重要部分是要意識到你的代碼以后將如何影響查看這些代碼的人。兩位作者高屋建瓴,帶你領(lǐng)略這一挑戰(zhàn)的各個方面,并且使用有指導意義的例子來解釋細節(jié)。" ——Michael Hunger,軟件開發(fā)人員

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    編寫可讀代碼的藝術(shù) PDF格式下載


用戶評論 (總計51條)

 
 

  •   在infoq上看到過介紹這本書的英文版,后來微博上看到翻譯版出了,便收藏一本。
    國內(nèi)沒有多少人能夠明白代碼是需要可讀性的,大家都只忙于埋頭加班、干活,很少有人像國外那些頂級的程序員那樣沉下心來思考編程這件事情。
    希望這本書能對我有所幫助
  •   里面有非常多的實踐經(jīng)驗
    照做肯定會對代碼的可讀性有很大的提高
    寫的代碼,不僅要讓自己讀得懂,也要讓別人讀得懂
  •   從書本里描述的代碼規(guī)范方式,讓我受益良多。很多時候自己編寫的片段,在幾個月之后自己都不想回頭看。需要增加代碼的可讀性,在這本書里有我需要的方法和規(guī)范形式。
  •   非常簡潔的語言(從翻譯那里可以看出來)配上十分到位的漫畫,讓這本書講的內(nèi)容非常容易被理解,程序猿都該好好看一看,寫代碼是一種藝術(shù)
  •   正想對自己的團隊對于代碼整潔度安排個有針對性的培訓和要求,整好看到這本書,感覺挺好,對于代碼整潔的要求,更多的還是應該著眼于長遠項目的長遠看;肯定短時間內(nèi)會影響開發(fā)效率,但是從長遠看,對于開發(fā)效率以及跟人的成長幫助很大的關(guān)鍵還是習慣的改變。
  •   其實很希望有一門代碼欣賞課,提供一些對編寫代碼深層次的思考。希望本書有所幫助。
  •   在代碼的書寫格式上有了新的理解,受益匪淺
  •   書本很薄,但是內(nèi)容卻是非常好,怎樣編寫出優(yōu)雅的代碼。
  •   詳細的介紹了,平時中遇到的一些代碼風格~邊看邊審閱自己的代碼,會有不少幫助~
  •   非常值得讀的一本書,對于編碼的質(zhì)量有很大的提升
  •   這本書是編程方面的經(jīng)典之作,值得多讀??!
  •   對于碼農(nóng)來說,這本書應該是常用的案頭書,時常溫故而知新。
  •   經(jīng)典,很好的書,好好學習哈
  •   還在學習,還是提到了不少應該注意的地方
  •   正在受益中
  •   書很新,還帶著外面的塑封皮,內(nèi)容應該也不錯
  •   不錯哦~~~晚上回家看
  •   內(nèi)容實在,分析在理。雖然書很薄,但受益匪淺。 出版社的定價太貴!
  •   it農(nóng)民工啊
  •   可讀性自查可以提升代碼品質(zhì)。精彩內(nèi)容:一致的風格比“正確”的風格更重要。
  •   很多時候面對代碼總覺得枯燥乏味。為什么不當做藝術(shù)品來雕琢呢?
    寫一份自己滿意的代碼,每優(yōu)化一次,都會有一種喜悅。
    正如書名可讀代碼的藝術(shù)。
    我喜歡。
  •   看過代碼大全,感覺這是代碼小全,代碼大全本身是很不錯的書,所以這本也不會太差。結(jié)合作者在一些大公司工作的經(jīng)驗,給出例子來講解,也算比較好看,有營養(yǎng)的。
  •   不錯的書,不過定價太高了點
  •   朋友說 寫的很有意思,挺不錯的一本書。
  •   參考書,提高一下
  •   他們說不錯,很值得一讀
  •   作者給出的建議都非常好,但譯者卻把書翻譯的很差,很多不符合中文的語法習慣。。。少數(shù)句子讀起來很別扭甚至不知道在講什么
  •   貼近實踐,很實用
  •   送貨時間還準時,就是那么薄的書43塊太貴了。。。
  •   書還可以~不過寄過來的書有個角被磨的很厲害~
  •   讀的內(nèi)容太淺,字體讀起來也不是很好,可能以為中文與英文一樣,顯得作者對中文版太不用心。個人覺得不值這個價錢,一兩天就能讀完。
  •   kindle版本代碼沒有格式啊~~我去,這個很重要啊~!以后不買kindle版的技術(shù)書籍了!
  •   之前也看過一些《代碼整潔之道》這樣的書,這本書明顯會比較淺顯易懂,而且大多問題都在實際開發(fā)中遇到過。實踐性很強,例子很多,非常實用。書不厚,但適宜反復閱讀,插圖也很有趣。
  •   書的內(nèi)容十分簡單,但是,語言十分精煉、富有啟發(fā)。適合編程初學者也適合我這樣3年的
  •   就是太特么貴了,這么薄薄的一本。。。
  •   內(nèi)容上講的不錯,能有一定的啟發(fā)作用,但是沒關(guān)聯(lián)的插圖太多,字體也太大,一本書其實內(nèi)容很少,價格還那么貴~
  •   看到好多人推薦,買來看了一下,還不錯。
  •   雖然書很薄,也貴,不過里面的內(nèi)容還是很值得一看,尤其是經(jīng)常糾結(jié)命名的孩子
  •   有趣,易懂,例子比較貼合實際,推薦做程序開發(fā)的都看看。唯一可惜的是書的內(nèi)容比較少,很快就看完了。
  •   很詳細 只是閑暇時隨便翻翻 但是對我編碼風格影響挺大的 同事夸我寫代碼講究 其實都是從上面學來的
  •   很好的一本書,講的是代碼的可讀性,中文翻譯的也很棒
  •   幾乎可以說是程序員必看的一本書, 從另外一個角度詮釋了編程.而且本書生動易懂, 十分推薦
  •   書不錯,講的都是簡單容易做到的的東西
  •   通俗易懂,比《clean code》寫的要淺淡更容易懂
  •   內(nèi)容精練,且較為使用,每章結(jié)束有小結(jié)。
  •   太薄了,感覺不值這個價格,掉一星,。內(nèi)容值得隔一段時間回頭看,養(yǎng)成好的編碼習慣很重要
  •   教你如可定義變量
  •   編寫可讀代碼的藝術(shù)
  •   非常棒非常好
  •   只要想要總是很快能到手
  •   書評推薦的,買來學習
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7