代碼整潔之道

出版時間:2010-1-1  出版社:人民郵電出版社  作者:[美]Robert C. Martin  頁數(shù):388  譯者:韓磊  
Tag標(biāo)簽:無  

前言

樂嚼(Ga.J01)是在丹麥最受歡迎的糖果品種之一,它濃郁的甘草味道,完美地彌補了此地潮濕且時常寒冷的天氣。對于我們這些丹麥人,樂嚼的妙處還在于包裝盒頂上印制的哲言慧語。今早我買了一包兩件裝,在其包裝盒上發(fā)現(xiàn)這句丹麥諺語:“小處誠實非小事?!边@句話正好是我想在這里說的。以小見大。本書寫到了一些價值殊勝的小主題。神在細節(jié)之中,建筑師(路德維?!っ芩埂し丁さ隆ち_)如是說。這句話引發(fā)了有關(guān)軟件開發(fā)、特別是敏捷軟件開發(fā)中架構(gòu)所處地位的若干爭論。鮑勃(Bob)2和我時常發(fā)現(xiàn)自己沉湎于此類對話中。沒錯,LudwigmiesVanderRohe的確專注于效用和基于宏偉架構(gòu)之上的永恒建筑形式。然而,他也為自己設(shè)計的每所房屋挑選每個門把手。為什么?因為小處見大。就TDD3話題展開目前仍在繼續(xù)的“辯論”時,鮑勃和我認(rèn)識到,我們均同意軟件架構(gòu)在開發(fā)中占據(jù)重要地位,但就其確切意義而言,我們之間還有分歧。然而,這種矛與盾孰利的討論相對而言并不重要,因為在項目開始之時,我們理所當(dāng)然應(yīng)該讓專業(yè)人士投入些許時間去思考及規(guī)劃。20世紀(jì)90年代末期有關(guān)僅以測試和代碼驅(qū)動設(shè)計的概念已一去不返。相對于任何宏偉愿景,對細節(jié)的關(guān)注甚至是更為關(guān)鍵的專業(yè)性基礎(chǔ)。首先,開發(fā)者通過小型實踐獲得可用于大型實踐的技能和信用度。其次,宏大建筑中最細小的部分,比如關(guān)不緊的門、有點兒沒鋪平的地板,甚至是凌亂的桌面,都會將整個大局的魅力毀滅殆盡。這就是整潔代碼之所系。架構(gòu)只是軟件開發(fā)用到的借喻之一,主要用在那種等同于建筑師交付毛坯房一般交付初始軟件產(chǎn)品的場合。在Serum和敏捷(Agile)的日子里,人們關(guān)注的是快速將產(chǎn)品推向市場。我們要求工廠全速運轉(zhuǎn)、生產(chǎn)軟件。這就是人類工廠:懂思考、會感受的編碼人,他們由產(chǎn)品備忘或用戶故事開始創(chuàng)造產(chǎn)品。來自制造業(yè)的借喻在這種場合大行其道。例如,Serum就從裝配線式的日本汽車生產(chǎn)方式中獲益良多。

內(nèi)容概要

  軟件質(zhì)量,不但依賴于架構(gòu)及項目管理,而且與代碼質(zhì)量緊密相關(guān)。這一點,無論是敏捷開發(fā)流派還是傳統(tǒng)開發(fā)流派,都不得不承認(rèn)?! ”緯岢鲆环N觀念:代碼質(zhì)量與其整潔度成正比。干凈的代碼,既在質(zhì)量上較為可靠,也為后期維護、升級奠定了良好基礎(chǔ)。作為編程領(lǐng)域的佼佼者,本書作者給出了一系列行之有效的整潔代碼操作實踐。這些實踐在本書中體現(xiàn)為一條條規(guī)則(或稱“啟示”),并輔以來自現(xiàn)實項目的正、反兩面的范例。只要遵循這些規(guī)則,就能編寫出干凈的代碼,從而有效提升代碼質(zhì)量?! ”緯喿x對象為一切有志于改善代碼質(zhì)量的程序員及技術(shù)經(jīng)理。書中介紹的規(guī)則均來自作者多年的實踐經(jīng)驗,涵蓋從命名到重構(gòu)的多個編程方面,雖為一“家”之言,然誠有可資借鑒的價值。

作者簡介

作者:(美國)馬丁(Robert C. Martin) 譯者:韓磊Robert C. Martin,是軟件工程領(lǐng)域的大師級人物,是《敏捷軟件開發(fā):原則、模式與實踐》、《敏捷軟件開發(fā):原則、模式與實踐(C#版)》(郵電)、《極限編程實踐》(郵電)等國內(nèi)引進的暢銷書的作者,其中第一本原著榮獲美國《軟件開發(fā)》第13屆震憾(Jolt)大獎,Martin的敏捷系列書是軟件工程界的權(quán)威書籍。本書是他的又一最新力作。Martin在書中對代碼具有革命性的解讀闡述了整潔代碼的最佳敏捷實踐的方法書中介紹規(guī)則均來自Martin多年的經(jīng)驗,擁有很高的借鑒價值韓磊,互聯(lián)網(wǎng)產(chǎn)品與運營專家,技術(shù)書籍著譯者。曾在全球著名的IT中文社區(qū)CSDN及《程序員》雜志任副總經(jīng)理、總編輯等職?,F(xiàn)居廣州。譯著有《夢斷代碼》和《C#編程風(fēng)格》。與劉韌合著《網(wǎng)絡(luò)媒體教程》,與戴飛合譯《BeginningC#Objects中文版:概念到代碼》。

書籍目錄

第1章 整潔代碼  1.1 要有代碼  1.2 糟糕的代碼  1.3 混亂的代價   1.3.1 華麗新設(shè)計   1.3.2 態(tài)度   1.3.3 迷題  1.3.4 整潔代碼的藝術(shù)   1.3.5 什么是整潔代碼  1.4 思想流派  1.5 我們是作者  1.6 童子軍軍規(guī)  1.7 前傳與原則  1.8 小結(jié)  1.9 文獻  第2章 有意義的命名  2.1 介紹  2.2 名副其實  2.3 避免誤導(dǎo)  2.4 做有意義的區(qū)分  2.5 使用讀得出來的名稱  2.6 使用可搜索的名稱  2.7 避免使用編碼   2.7.1 匈牙利語標(biāo)記法   2.7.2 成員前綴   2.7.3 接口和實現(xiàn)  2.8 避免思維映射  2.9  類名  2.10 方法名  2.11 別扮可愛  2.12 每個概念對應(yīng)一個詞  2.13 別用雙關(guān)語  2.14 使用解決方案領(lǐng)域名稱  2.15 使用源自所涉問題領(lǐng)域的名稱  2.16 添加有意義的語境  2.17 不要添加沒用的語境  2.18 最后的話 第3章 函數(shù)  3.1 短小  3.2 只做一件事  3.3 每個函數(shù)一個抽象層級  3.4 switch語句  3.5 使用描述性的名稱  3.6 函數(shù)參數(shù)   3.6.1 一元函數(shù)的普遍形式   3.6.2 標(biāo)識參數(shù)   3.6.3 二元函數(shù)   3.6.4 三元函數(shù)   3.6.5 參數(shù)對象   3.6.6 參數(shù)列表   3.6.7 動詞與關(guān)鍵字  3.7 無副作用  3.8 分隔指令與詢問  3.9 使用異常替代返回錯誤碼   3.9.1 抽離Try/Catch代碼塊   3.9.2 錯誤處理就是一件事   3.9.3 Error.java依賴磁鐵  3.10 別重復(fù)自己  3.11 結(jié)構(gòu)化編程  3.12 如何寫出這樣的函數(shù)  3.13 小結(jié)  3.14 SetupTeardownIncluder程序  3.15 文獻 第4章 注釋 第5章 格式第6章 對象和數(shù)據(jù)結(jié)構(gòu)第7章 錯誤處理第8章 邊界第9章 單元測試第10章 類 第11章 系統(tǒng)第12章 迭進 第13章 并發(fā)編程第14章 逐步改進第15章 JUnit內(nèi)幕 第16章 重構(gòu)SerialDate第17章 味道與啟發(fā)附錄A 并發(fā)編程II 附錄B org.jfree.date.SerialDate 結(jié)束語 

章節(jié)摘錄

插圖:這也意味著函數(shù)不應(yīng)該大到足以容納嵌套結(jié)構(gòu)。所以,函數(shù)的縮進層級不該多于一層或兩層。當(dāng)然,這樣的函數(shù)易于閱讀和理解。代碼清單3-1顯然想做好幾件事。它創(chuàng)建緩沖區(qū)、獲取頁面、搜索繼承下來的頁面、渲染路徑、添加神秘的字符串、生成HTML,如此等等。代碼清單3-1手忙腳亂。而代碼清單3-3則只做一件簡單的事。它將設(shè)置和拆解包納到測試頁面中。過去30年以來,以下建議以不同形式一再出現(xiàn):函數(shù)應(yīng)該做一件事。做好這件事。只做這一件事。問題在于很難知道那件該做的事是什么。代碼清單3.3只做了一件事,對吧?其實也很容易看作是三件事:(1)判斷是否為測試頁面;(2)如果是,則容納進設(shè)置和分拆步驟;(3)渲染成HTML。如果函數(shù)只是做了該函數(shù)名下同一抽象層上的步驟,則函數(shù)還是只做了一件事。編寫函數(shù)畢竟是為了把大一些的概念(換言之,函數(shù)的名稱)拆分為另一抽象層上的一系列步驟。代碼清單3.1明顯包括了處于多個不同抽象層級的步驟。顯然,它所做的不止一件事。即便是代碼清單3-2也有兩個抽象層,這已被我們將其縮短的能力所證明。然而,很難再將代碼清單3.3做有意義的縮短。可以將if語句拆出來做一個名為include Setup And Teardonws Ifrestpage的函數(shù),但那只是重新詮釋代碼,并未改變抽象層級。所以,要判斷函數(shù)是否不止做了一件事,還有一個方法,就是看是否能再拆出一個函數(shù),該函數(shù)不僅只是單純地重新詮釋其實現(xiàn)。

編輯推薦

《代碼整潔之道》:細節(jié)之中自有天地,整潔成就卓越代碼盡管糟糕的代碼也能運行,但如果代碼不整潔,會使整個開發(fā)團隊泥足深陷,寫得不好的代碼每年都要耗費難以計數(shù)的時間和資源。然而這種情況并非無法避免。著名軟件專家RoberfC.Marlin在《代碼整潔之道》中為你呈現(xiàn)出了革命性的視野。Martin攜同ObjectMetltor公司的同事,從他們有關(guān)整潔代碼的最佳敏捷實踐中提煉出軟件技藝的價值觀,以饗讀者,讓你成為更優(yōu)秀的程序員——只要你著手研讀《代碼整潔之道》。閱讀《代碼整潔之道》需要你做些什么呢?你將閱讀代碼——大量代碼?!洞a整潔之道》促使你思考代碼中何謂正確,何謂錯誤。更重要的是,《代碼整潔之道》將促使你重新評估自己的專業(yè)價值觀,以及對自己技藝的承諾。從《代碼整潔之道》中可以學(xué)到:好代碼和糟糕的代碼之間的區(qū)別:如何編寫好代碼,如何將糟糕的代碼轉(zhuǎn)化為好代碼:如何創(chuàng)建好名稱、好函數(shù)、好對象和好類;如何格式化代碼以實現(xiàn)其可讀性的最大化:如何在不妨礙代碼邏輯的前提下充分實現(xiàn)錯誤處理;如何進行單元測試和測試驅(qū)動開發(fā)。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    代碼整潔之道 PDF格式下載


用戶評論 (總計4條)

 
 

  •   cleancode,極客必讀
  •   產(chǎn)品不錯,值得推薦購買
  •   質(zhì)量一般,感覺跟盜版的似的
  •   書中有很多有用 的知識
 

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

京ICP備13047387號-7