出版時(shí)間:2010-1-1 出版社:人民郵電出版社 作者:[美]Robert C. Martin 頁(yè)數(shù):388 譯者:韓磊
Tag標(biāo)簽:無(wú)
前言
樂(lè)嚼(Ga.J01)是在丹麥最受歡迎的糖果品種之一,它濃郁的甘草味道,完美地彌補(bǔ)了此地潮濕且時(shí)常寒冷的天氣。對(duì)于我們這些丹麥人,樂(lè)嚼的妙處還在于包裝盒頂上印制的哲言慧語(yǔ)。今早我買了一包兩件裝,在其包裝盒上發(fā)現(xiàn)這句丹麥諺語(yǔ):“小處誠(chéng)實(shí)非小事?!边@句話正好是我想在這里說(shuō)的。以小見大。本書寫到了一些價(jià)值殊勝的小主題。神在細(xì)節(jié)之中,建筑師(路德維?!っ芩埂し丁さ隆ち_)如是說(shuō)。這句話引發(fā)了有關(guān)軟件開發(fā)、特別是敏捷軟件開發(fā)中架構(gòu)所處地位的若干爭(zhēng)論。鮑勃(Bob)2和我時(shí)常發(fā)現(xiàn)自己沉湎于此類對(duì)話中。沒(méi)錯(cuò),LudwigmiesVanderRohe的確專注于效用和基于宏偉架構(gòu)之上的永恒建筑形式。然而,他也為自己設(shè)計(jì)的每所房屋挑選每個(gè)門把手。為什么?因?yàn)樾√幰姶蟆>蚑DD3話題展開目前仍在繼續(xù)的“辯論”時(shí),鮑勃和我認(rèn)識(shí)到,我們均同意軟件架構(gòu)在開發(fā)中占據(jù)重要地位,但就其確切意義而言,我們之間還有分歧。然而,這種矛與盾孰利的討論相對(duì)而言并不重要,因?yàn)樵陧?xiàng)目開始之時(shí),我們理所當(dāng)然應(yīng)該讓專業(yè)人士投入些許時(shí)間去思考及規(guī)劃。20世紀(jì)90年代末期有關(guān)僅以測(cè)試和代碼驅(qū)動(dòng)設(shè)計(jì)的概念已一去不返。相對(duì)于任何宏偉愿景,對(duì)細(xì)節(jié)的關(guān)注甚至是更為關(guān)鍵的專業(yè)性基礎(chǔ)。首先,開發(fā)者通過(guò)小型實(shí)踐獲得可用于大型實(shí)踐的技能和信用度。其次,宏大建筑中最細(xì)小的部分,比如關(guān)不緊的門、有點(diǎn)兒沒(méi)鋪平的地板,甚至是凌亂的桌面,都會(huì)將整個(gè)大局的魅力毀滅殆盡。這就是整潔代碼之所系。架構(gòu)只是軟件開發(fā)用到的借喻之一,主要用在那種等同于建筑師交付毛坯房一般交付初始軟件產(chǎn)品的場(chǎng)合。在Serum和敏捷(Agile)的日子里,人們關(guān)注的是快速將產(chǎn)品推向市場(chǎng)。我們要求工廠全速運(yùn)轉(zhuǎn)、生產(chǎn)軟件。這就是人類工廠:懂思考、會(huì)感受的編碼人,他們由產(chǎn)品備忘或用戶故事開始創(chuàng)造產(chǎn)品。來(lái)自制造業(yè)的借喻在這種場(chǎng)合大行其道。例如,Serum就從裝配線式的日本汽車生產(chǎn)方式中獲益良多。
內(nèi)容概要
軟件質(zhì)量,不但依賴于架構(gòu)及項(xiàng)目管理,而且與代碼質(zhì)量緊密相關(guān)。這一點(diǎn),無(wú)論是敏捷開發(fā)流派還是傳統(tǒng)開發(fā)流派,都不得不承認(rèn)?! ”緯岢鲆环N觀念:代碼質(zhì)量與其整潔度成正比。干凈的代碼,既在質(zhì)量上較為可靠,也為后期維護(hù)、升級(jí)奠定了良好基礎(chǔ)。作為編程領(lǐng)域的佼佼者,本書作者給出了一系列行之有效的整潔代碼操作實(shí)踐。這些實(shí)踐在本書中體現(xiàn)為一條條規(guī)則(或稱“啟示”),并輔以來(lái)自現(xiàn)實(shí)項(xiàng)目的正、反兩面的范例。只要遵循這些規(guī)則,就能編寫出干凈的代碼,從而有效提升代碼質(zhì)量。 本書閱讀對(duì)象為一切有志于改善代碼質(zhì)量的程序員及技術(shù)經(jīng)理。書中介紹的規(guī)則均來(lái)自作者多年的實(shí)踐經(jīng)驗(yàn),涵蓋從命名到重構(gòu)的多個(gè)編程方面,雖為一“家”之言,然誠(chéng)有可資借鑒的價(jià)值。
作者簡(jiǎn)介
作者:(美國(guó))馬丁(Robert C. Martin) 譯者:韓磊Robert C. Martin,是軟件工程領(lǐng)域的大師級(jí)人物,是《敏捷軟件開發(fā):原則、模式與實(shí)踐》、《敏捷軟件開發(fā):原則、模式與實(shí)踐(C#版)》(郵電)、《極限編程實(shí)踐》(郵電)等國(guó)內(nèi)引進(jìn)的暢銷書的作者,其中第一本原著榮獲美國(guó)《軟件開發(fā)》第13屆震憾(Jolt)大獎(jiǎng),Martin的敏捷系列書是軟件工程界的權(quán)威書籍。本書是他的又一最新力作。Martin在書中對(duì)代碼具有革命性的解讀闡述了整潔代碼的最佳敏捷實(shí)踐的方法書中介紹規(guī)則均來(lái)自Martin多年的經(jīng)驗(yàn),擁有很高的借鑒價(jià)值韓磊,互聯(lián)網(wǎng)產(chǎn)品與運(yùn)營(yíng)專家,技術(shù)書籍著譯者。曾在全球著名的IT中文社區(qū)CSDN及《程序員》雜志任副總經(jīng)理、總編輯等職?,F(xiàn)居廣州。譯著有《夢(mèng)斷代碼》和《C#編程風(fēng)格》。與劉韌合著《網(wǎng)絡(luò)媒體教程》,與戴飛合譯《BeginningC#Objects中文版:概念到代碼》。
書籍目錄
第1章 整潔代碼 1.1 要有代碼 1.2 糟糕的代碼 1.3 混亂的代價(jià) 1.3.1 華麗新設(shè)計(jì) 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 文獻(xiàn) 第2章 有意義的命名 2.1 介紹 2.2 名副其實(shí) 2.3 避免誤導(dǎo) 2.4 做有意義的區(qū)分 2.5 使用讀得出來(lái)的名稱 2.6 使用可搜索的名稱 2.7 避免使用編碼 2.7.1 匈牙利語(yǔ)標(biāo)記法 2.7.2 成員前綴 2.7.3 接口和實(shí)現(xiàn) 2.8 避免思維映射 2.9 類名 2.10 方法名 2.11 別扮可愛 2.12 每個(gè)概念對(duì)應(yīng)一個(gè)詞 2.13 別用雙關(guān)語(yǔ) 2.14 使用解決方案領(lǐng)域名稱 2.15 使用源自所涉問(wèn)題領(lǐng)域的名稱 2.16 添加有意義的語(yǔ)境 2.17 不要添加沒(méi)用的語(yǔ)境 2.18 最后的話 第3章 函數(shù) 3.1 短小 3.2 只做一件事 3.3 每個(gè)函數(shù)一個(gè)抽象層級(jí) 3.4 switch語(yǔ)句 3.5 使用描述性的名稱 3.6 函數(shù)參數(shù) 3.6.1 一元函數(shù)的普遍形式 3.6.2 標(biāo)識(shí)參數(shù) 3.6.3 二元函數(shù) 3.6.4 三元函數(shù) 3.6.5 參數(shù)對(duì)象 3.6.6 參數(shù)列表 3.6.7 動(dòng)詞與關(guān)鍵字 3.7 無(wú)副作用 3.8 分隔指令與詢問(wèn) 3.9 使用異常替代返回錯(cuò)誤碼 3.9.1 抽離Try/Catch代碼塊 3.9.2 錯(cuò)誤處理就是一件事 3.9.3 Error.java依賴磁鐵 3.10 別重復(fù)自己 3.11 結(jié)構(gòu)化編程 3.12 如何寫出這樣的函數(shù) 3.13 小結(jié) 3.14 SetupTeardownIncluder程序 3.15 文獻(xiàn) 第4章 注釋 第5章 格式第6章 對(duì)象和數(shù)據(jù)結(jié)構(gòu)第7章 錯(cuò)誤處理第8章 邊界第9章 單元測(cè)試第10章 類 第11章 系統(tǒng)第12章 迭進(jìn) 第13章 并發(fā)編程第14章 逐步改進(jìn)第15章 JUnit內(nèi)幕 第16章 重構(gòu)SerialDate第17章 味道與啟發(fā)附錄A 并發(fā)編程II 附錄B org.jfree.date.SerialDate 結(jié)束語(yǔ)
章節(jié)摘錄
插圖:這也意味著函數(shù)不應(yīng)該大到足以容納嵌套結(jié)構(gòu)。所以,函數(shù)的縮進(jìn)層級(jí)不該多于一層或兩層。當(dāng)然,這樣的函數(shù)易于閱讀和理解。代碼清單3-1顯然想做好幾件事。它創(chuàng)建緩沖區(qū)、獲取頁(yè)面、搜索繼承下來(lái)的頁(yè)面、渲染路徑、添加神秘的字符串、生成HTML,如此等等。代碼清單3-1手忙腳亂。而代碼清單3-3則只做一件簡(jiǎn)單的事。它將設(shè)置和拆解包納到測(cè)試頁(yè)面中。過(guò)去30年以來(lái),以下建議以不同形式一再出現(xiàn):函數(shù)應(yīng)該做一件事。做好這件事。只做這一件事。問(wèn)題在于很難知道那件該做的事是什么。代碼清單3.3只做了一件事,對(duì)吧?其實(shí)也很容易看作是三件事:(1)判斷是否為測(cè)試頁(yè)面;(2)如果是,則容納進(jìn)設(shè)置和分拆步驟;(3)渲染成HTML。如果函數(shù)只是做了該函數(shù)名下同一抽象層上的步驟,則函數(shù)還是只做了一件事。編寫函數(shù)畢竟是為了把大一些的概念(換言之,函數(shù)的名稱)拆分為另一抽象層上的一系列步驟。代碼清單3.1明顯包括了處于多個(gè)不同抽象層級(jí)的步驟。顯然,它所做的不止一件事。即便是代碼清單3-2也有兩個(gè)抽象層,這已被我們將其縮短的能力所證明。然而,很難再將代碼清單3.3做有意義的縮短??梢詫f語(yǔ)句拆出來(lái)做一個(gè)名為include Setup And Teardonws Ifrestpage的函數(shù),但那只是重新詮釋代碼,并未改變抽象層級(jí)。所以,要判斷函數(shù)是否不止做了一件事,還有一個(gè)方法,就是看是否能再拆出一個(gè)函數(shù),該函數(shù)不僅只是單純地重新詮釋其實(shí)現(xiàn)。
編輯推薦
《代碼整潔之道》:細(xì)節(jié)之中自有天地,整潔成就卓越代碼盡管糟糕的代碼也能運(yùn)行,但如果代碼不整潔,會(huì)使整個(gè)開發(fā)團(tuán)隊(duì)泥足深陷,寫得不好的代碼每年都要耗費(fèi)難以計(jì)數(shù)的時(shí)間和資源。然而這種情況并非無(wú)法避免。著名軟件專家RoberfC.Marlin在《代碼整潔之道》中為你呈現(xiàn)出了革命性的視野。Martin攜同ObjectMetltor公司的同事,從他們有關(guān)整潔代碼的最佳敏捷實(shí)踐中提煉出軟件技藝的價(jià)值觀,以饗讀者,讓你成為更優(yōu)秀的程序員——只要你著手研讀《代碼整潔之道》。閱讀《代碼整潔之道》需要你做些什么呢?你將閱讀代碼——大量代碼?!洞a整潔之道》促使你思考代碼中何謂正確,何謂錯(cuò)誤。更重要的是,《代碼整潔之道》將促使你重新評(píng)估自己的專業(yè)價(jià)值觀,以及對(duì)自己技藝的承諾。從《代碼整潔之道》中可以學(xué)到:好代碼和糟糕的代碼之間的區(qū)別:如何編寫好代碼,如何將糟糕的代碼轉(zhuǎn)化為好代碼:如何創(chuàng)建好名稱、好函數(shù)、好對(duì)象和好類;如何格式化代碼以實(shí)現(xiàn)其可讀性的最大化:如何在不妨礙代碼邏輯的前提下充分實(shí)現(xiàn)錯(cuò)誤處理;如何進(jìn)行單元測(cè)試和測(cè)試驅(qū)動(dòng)開發(fā)。
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載