出版時間:2006-3 出版社:電子工業(yè)出版社 作者:[美] 史蒂夫·邁克康奈爾 頁數(shù):914 譯者:金戈,湯凌,陳碩,張菲 譯,裘宗燕 審校
Tag標簽:無
前言
普通的軟件工程實踐與最優(yōu)秀的軟件實踐差距巨大——多半比其他工程學(xué)科中的這種差距都要大。因此傳播優(yōu)秀實踐經(jīng)驗的工具是十分重要的?!狥red Brooks 我寫這本書的首要目的,就是希望縮小本行業(yè)中一般商業(yè)實踐與大師級人物及專家們之間的知識差距。許多強大的編程技術(shù)在被編程領(lǐng)域的大眾接觸之前,都已在學(xué)術(shù)論文和期刊里塵封了多年。雖然近年來前衛(wèi)的軟件開發(fā)實踐迅速發(fā)展,但普通的實踐手段并沒有太大變化。很多程序的開發(fā)仍然是漏洞百出、遲于交付并且超出預(yù)算,還有很多根本就無法滿足用戶的需求。軟件業(yè)界以及學(xué)術(shù)界的研究人員們已經(jīng)發(fā)現(xiàn)了不少行之有效的實踐經(jīng)驗,足以解決自20世紀70年代以來編程領(lǐng)域中日益蔓延的大多數(shù)問題??墒沁@些實踐經(jīng)驗很少在高度專業(yè)化的技術(shù)期刊之外對外發(fā)表,所以時至今日大多數(shù)編程的機構(gòu)和組織還沒能用上這些技術(shù)。有研究表明,一項研發(fā)成果從其誕生之日起,到進入商業(yè)實踐階段,通常要經(jīng)歷 5到15年的時間甚至更長(Raghavan和Chand 1989;Rogers 1995;Parnas 1999)。這本手冊就是想縮短這一漫長的過程,讓那些關(guān)鍵性的研發(fā)成果現(xiàn)在就能為更多編程人員所用。Who Should Read This Book 誰應(yīng)當閱讀本書 本書中所匯集的研究成果和編程經(jīng)驗,將幫助你創(chuàng)建更高質(zhì)量的軟件,使你能更快速地進行開發(fā),遇到的問題更少。本書將幫你弄明白過去為什么會遇到那些問題,并告訴你如何在將來避免它們。這里所描述的編程實踐將幫助你把控更大型的項目,還能在項目的需求發(fā)生變動時幫助你成功地維護并修改已經(jīng)開發(fā)出來的軟件。Experienced Programmers 經(jīng)驗豐富的程序員 對于經(jīng)驗豐富的程序員而言,本書正是他們想要的一本翔實、易用的軟件開發(fā)指南。本書關(guān)注的是“構(gòu)建(construction)”,即整個軟件生命周期中最為人熟知的部分;本書把強大的軟件開發(fā)技術(shù)寫得讓自學(xué)的程序員和參加過正規(guī)訓(xùn)練的程序員都能讀懂。Technical Leads 技術(shù)領(lǐng)導(dǎo) 許多技術(shù)領(lǐng)導(dǎo)(或者說是技術(shù)帶頭人)都曾在他們的團隊中使用《代碼大全》(第一版)培訓(xùn)經(jīng)驗不足的程序員。當然,本書也可以用來填補你自己的知識缺陷。如果你是一位經(jīng)驗豐富的程序員,你不一定會同意我給出的所有結(jié)論(如果不是這樣,我倒會覺得奇怪)。但如果你閱讀本書并思索其中的每一個問題之后,那么幾乎不會有人再能提出什么你未曾思考過的軟件構(gòu)建方面的問題了。Self-Taught Programmers 自學(xué)的程序員 如果你沒有受過太多的正規(guī)訓(xùn)練,本書正是你的良伴。每年約有50000 個新手進入這一專業(yè)領(lǐng)域(BLS 2004, Hecker 2004),但每年卻只有35000 個人獲得與軟件相關(guān)的學(xué)位(NCES 2002)。從這些數(shù)據(jù)中我們可以很快得出一個結(jié)論——很多程序員并沒有接受過軟件開發(fā)方面的正規(guī)教育。在許多新興的專業(yè)人員社群中都可以看到自學(xué)的編程人員——工程師、會計師、科學(xué)家、教師以及小公司的老板們;編程序是他們工作的一部分,但他們并不一定把自己看作是程序員。無論你在編程方面受過何種程度的教育,本手冊都會讓你能對各種行之有效的編程實踐有深入的了解。Students 學(xué)生 與有經(jīng)驗但缺乏正規(guī)培訓(xùn)的程序員對應(yīng)的,是那些剛剛畢業(yè)的大學(xué)生。新近畢業(yè)的學(xué)生大多擁有豐富的理論知識,但卻缺乏創(chuàng)建產(chǎn)品級的程序( production programs)的實踐技術(shù)。關(guān)于編寫優(yōu)秀代碼的實踐知識,就像部落里祭祀儀式上的舞蹈一樣,只能慢慢地從軟件架構(gòu)師、項目負責人、分析師以及更有經(jīng)驗的程序員那里傳承下來。更多的時候,這些知識就是程序員個人反復(fù)的嘗試和犯錯后的結(jié)晶。本書則是這些緩慢、傳統(tǒng)的智慧傳承方式的一種替代方案,它匯集了以往只能從他人經(jīng)驗中獵取和收集的大量實用的經(jīng)驗技巧和有效的開發(fā)策略。對于那些正在從學(xué)術(shù)環(huán)境轉(zhuǎn)向?qū)I(yè)環(huán)境的學(xué)生來說,這是一本必備的讀物。Where Else Can You Find This Information 還能從何處找到這些信息 本書綜合整理了來自四面八方的多種軟件構(gòu)建技術(shù)。這些技術(shù)是軟件構(gòu)建領(lǐng)域長年累月積聚下來的智慧財富,它們不僅分散,而且其中大部分素材常年散落于紙面之外(Hildebrand 1989,McConnell 1997a)。其實,內(nèi)行的程序員們所用的那些強大有效的編程技術(shù)并不神秘。但是這些內(nèi)行人士面對手頭日復(fù)一日緊張沖刺的項目,幾乎沒有誰花些時間和大家分享他們所學(xué)到的知識和技能。因此,程序員們可能很難找到很好的關(guān)于編程的信息來源。而本書所描述的技術(shù)則填補了入門圖書和高級編程圖書之間的空白。當你讀過了《Java編程入門》、《高級Java編程》和《高高級Java編程》之后,如果你還想學(xué)更多的編程知識,那還能讀點什么呢?你可以閱讀Intel或 Motorola的硬件參考手冊,閱讀Microsoft Windows或Linux操作系統(tǒng)的函數(shù)手冊,甚至是去閱讀講另外一門編程語言的書籍——你確實無法在一個缺乏這種詳細參考資料的環(huán)境中使用語言或者程序。但本書是為數(shù)不多的探究編程本質(zhì)的書籍之一。無論你在何種環(huán)境下、用何種語言編寫程序,書中某些最有益處的編程技術(shù)都能派上用場。其他的書一般都忽略了這些實踐知識,而這也正是本書專注于這些知識的原因。本書中的信息是從許多來源中提煉出來的,如下圖所示。想完全獲得在本書中看到的這些信息的另外途徑只有一條,那就是通讀堆積如山的書籍和成百上千本技術(shù)期刊,還得再加上大量的實際經(jīng)驗。即便你把這些事情都做到了,本書仍然會對你很有益處,因為它把所有這些資料都集于一處,便于查閱。Key Benefits of This Handbook 閱讀本書的收益 無論你是何種背景,本書都能助你在更短的時間內(nèi)寫出更棒的程序,還不會那么頭疼。全面的軟件構(gòu)建參考本書討論了軟件構(gòu)建活動的方方面面,比如說軟件的質(zhì)量,還有編程的思維方式。它還會深入闡述構(gòu)建活動中的重要細節(jié),如創(chuàng)建一個類的步驟,使用數(shù)據(jù)和控制結(jié)構(gòu)時的各種事項,還有調(diào)試、重構(gòu)、代碼調(diào)優(yōu)的技術(shù)與策略等。你無須逐頁通讀所有主題。本書寫得讓你很容易就能找到感興趣的特定話題。隨時備用的核對表本書包括了大量的核對表(checklist),你可以用它來評估軟件架構(gòu)、設(shè)計方法、類和子程序的質(zhì)量、變量命名、控制結(jié)構(gòu)、代碼格式、測試用例等等。與時俱進的信息本書介紹了一些當今最為入時的技術(shù),其中有許多還未被廣泛采用。正因為本書擷取了實踐與研究兩者的精髓,它所介紹的這些技術(shù)將經(jīng)久不衰,受用多年。以更廣的視角檢視軟件開發(fā)本書將給你一個機會,讓你凌駕于日復(fù)一日、忙于救火的混亂場面之上,看看到底什么是可行的,而什么又是不可行的。實踐中的程序員們很少有時間去閱讀數(shù)以百計的書籍與期刊,而本手冊萃取了其中的精華。本書所匯集的理論研究與實踐經(jīng)驗將活躍你的思維,激勵你對自己項目的思考,使你的行動更有策略,避免反復(fù)陷入完全一樣的戰(zhàn)斗。絕不注水有些軟件書籍,其中精髓部分的凈重也就1克,卻注入了重達 10克的水分。本書則會公平地探討每項技術(shù)的優(yōu)劣。關(guān)于你自己項目的特定需求,你了解得要比任何人都清楚。因此本書僅是給你公正客觀的信息,讓你能夠具體情況具體分析,做出正確的決策。有關(guān)概念適用于大多數(shù)常見的語言本書中介紹的技術(shù)能讓你可以更好地利用你的編程語言,無論是C++、C#、Java、VisualBasic,還是其他類似語言。豐富的代碼示例本書中收集了近500個用于展現(xiàn)優(yōu)、劣代碼之差異的示例。之所以給出這么多示例也是出于個人的偏好。因為從示例中我最能學(xué)到東西,我想其他程序員也該可以通過這種方式學(xué)得更好吧。這些示例是用了多種不同的語言所寫成,因為學(xué)習(xí)并掌握不止一門語言通常是專業(yè)程序員職業(yè)生涯中的分水嶺。一旦一名程序員意識到編程原則是超越特定語言語法的東西時,通往能夠?qū)嵸|(zhì)地改善編程質(zhì)量并提高工作效率的知識的大門也就向他敞開了。為了避免以多種語言寫成的例子成為讀者的負擔,我會盡量避免使用各語言中那些深奧的特性——除非當時就是需要探討它。為了弄懂一個代碼片段要表達的問題,你無須完全理解所有的細枝末節(jié)。如果你集中關(guān)注示例所展示的問題,那么無論它是用什么語言寫成的,你都能讀懂。為讓你更容易理解這些示例,我還給其中的關(guān)鍵部分加了注解。引用其他信息來源本書匯集了為數(shù)眾多關(guān)于軟件構(gòu)建方面的可用信息,但這并不算完。在本書所有的章節(jié)中,“更多資源”一節(jié)都會介紹其他一些書籍和文章,你希望進一步深入了解感興趣的話題時可以閱讀它們。配套網(wǎng)站在本書的配套網(wǎng)站cc2e.com上會提供更新的核對表、參考書目、雜志文章、網(wǎng)頁鏈接等內(nèi)容。要訪問《代碼大全》(第二版)中的相關(guān)信息,請如本段文字左側(cè)所示,在瀏覽器中輸入“cc2e.com/”,后跟一個四位阿拉伯數(shù)字即可。這樣的網(wǎng)址參考鏈接在本書中會有很多。Why This Handbook Was Written 為什么要寫這本手冊 在軟件工程界,人們都清楚地認識到,應(yīng)該把軟件開發(fā)中行之有效的實踐知識歸納、編撰成一本開發(fā)手冊。計算機科學(xué)與技術(shù)委員會( ComputerScienceandTechnologyBoard)的一份報告指出,要想大幅提高軟件開發(fā)的質(zhì)量和工作效率,需要把已知的行之有效的軟件開發(fā)實踐知識歸納、統(tǒng)一并廣為傳播(CSTB1990,McConnell1997a)。該委員會還指出,傳播這些知識的策略應(yīng)建立在軟件工程手冊這個概念的基礎(chǔ)之上。The Topic of Construction Has Been Neglected 軟件構(gòu)建的話題常被忽視 曾幾何時,軟件開發(fā)和編寫代碼被認為是同一件事情。但隨著軟件開發(fā)周期中的各個活動被人們逐漸認識,該領(lǐng)域中一些最棒的頭頭腦腦們就開始花更多時間去分析和爭論諸如項目管理方法、需求、設(shè)計、測試等問題了。在這場學(xué)習(xí)研究新興領(lǐng)域的浪潮中,代碼構(gòu)建這個與軟件開發(fā)骨肉相連的環(huán)節(jié)反而被忽視了。關(guān)于軟件構(gòu)建的討論之所以步履蹣跚,也是因為有人認為,如果將構(gòu)建活動視作軟件開發(fā)中的一項特定活動,就暗示著也必須把它視作其中一個特定階段。然而實際上,軟件開發(fā)中的各項活動和各個階段無須以特定的關(guān)系一一對應(yīng)起來;而且無論其他的軟件活動是分階段(phase)進行、還是迭代式(interation)進行,或者以某種其他方式進行,都不妨礙我們探討“ 構(gòu)建活動”。Construction Is Important 構(gòu)建活動是重要的 構(gòu)建活動被學(xué)者和作者所忽略的另一個原因是源于一個錯誤的觀念,他們認為與其他軟件開發(fā)活動相比,構(gòu)建是一個相對機械化的過程,并沒有太多可改進的機會。然而事實并非如此。“代碼構(gòu)建”一般占據(jù)了小型項目65%的工作量,而在中型項目上也達到了50%。同時,“構(gòu)建”也要為小型項目中75%的錯誤負責,在中到大型項目上這一比例為50%到75%。任何一個要為50%到75%的錯誤負責的活動環(huán)節(jié)顯然都是應(yīng)該加以改善的。(第27章中對這些統(tǒng)計數(shù)據(jù)有更多詳細的探討。) 也有一些評論家指出,雖然構(gòu)建階段發(fā)生的錯誤在所有錯誤中占有很大的比例,但修正這些錯誤的代價往往比“修正那些由于需求和架構(gòu)所導(dǎo)致的錯誤”要低很多,這也就暗示著構(gòu)建活動因此不那么重要。誠然,修正由構(gòu)建活動所導(dǎo)致的錯誤的代價比較低這一說法是正確的,但它也引起了誤導(dǎo)— —因為如果不修正這些錯誤,代價反而會高得令人難以置信。研究人員發(fā)現(xiàn),軟件中一些代價最為昂貴的錯誤,其罪魁禍首常常是一些小范圍的代碼錯誤,其代價甚至可以飆至上億美元的程度(Weinberg1983,SEN1990)??梢杂幂^低代價修正的錯誤,并不意味著這些錯誤的修正不重要。人們忽視構(gòu)建活動的另一種原因則頗具諷刺意味——就因為它是軟件開發(fā)中唯一一項肯定能完成的活動。對于需求,人們可以自以為是而不去潛心分析;對于架構(gòu),人們可以偷工減料而不去精心設(shè)計;對于測試,人們可以短斤少兩甚至跳過不做,而不去整體計劃并付諸實施。但只要寫出來的是程序,總歸要進行構(gòu)建活動,這也說明,只要改進軟件構(gòu)建這一環(huán)節(jié),就一定對軟件開發(fā)實踐有好處。No Comparable Book Is Available 沒有可媲美的同類書籍 既然看到構(gòu)建活動有著如此清晰的重要性,我曾相信,當我構(gòu)思此書時已有人寫過關(guān)于有效的軟件構(gòu)建實踐的書籍了。對這樣一本介紹如何有效地進行編程的書籍的需求是顯而易見的,但是我卻只找到很少幾本關(guān)于軟件構(gòu)建這一題材的書,而且那些書也僅是涉及到這個話題的一部分罷了。有些書寫于15年前,還是和一些深奧的語言——如ALGOL、PL/I、Ratfor以及 Smalltalk等——緊密相關(guān)的。有些則是出自并不實際編寫產(chǎn)品代碼的教授之手。教授們寫出來的技術(shù)內(nèi)容對于學(xué)生們的項目而言還行得通,但他們通常不知道如何在完整規(guī)模的開發(fā)環(huán)境中施展這些技術(shù);還有些書是為了宣傳作者最新鐘情的某種方法論,卻忽略了那些被時間反復(fù)證明是行之有效的成熟實踐技術(shù)的巨大寶庫。簡而言之,我沒有找到哪怕是一本試圖歸納總結(jié)來自專家經(jīng)驗、業(yè)界研究以及學(xué)術(shù)成果的實踐編程技術(shù)的書籍。關(guān)于這個話題的討論要能和現(xiàn)今的編程語言、面向?qū)ο缶幊碳夹g(shù)以及前沿的開發(fā)實踐緊密結(jié)合。很明顯需要有人寫出一本這樣的書出來,而他必須了解當今的理論發(fā)展水平,同時也編寫過足夠多的能反映實踐狀況的產(chǎn)品級代碼。我把本書構(gòu)思成關(guān)于代碼構(gòu)建活動的完整探討——一個程序員給其他程序員寫的書。AuthorNote 作者注 歡迎您對本書中所探討的話題進行質(zhì)詢,例如您的勘誤報告,或其他相關(guān)的內(nèi)容。請發(fā)郵件與我聯(lián)系,我的郵箱是stevemmc@construx.com,也可以訪問我的網(wǎng)站:www.SteveMcConnell.com。
內(nèi)容概要
代碼大全(第2版)是著名Ⅱ暢銷書作者、《IEEESoftware》雜志前主編、具有20年編程與項目管理經(jīng)驗的SteveMcConneU十余年前的經(jīng)典著作的全新演繹:第2版做了全面的更新,增加了很多與時俱進的內(nèi)容,包括對新語言、新的開發(fā)過程與方法論的討論,等等。這是一本百科全書式的軟件構(gòu)建手冊,涵蓋了軟件構(gòu)建活動的方方面面,尤其強調(diào)提高軟件質(zhì)量的種種實踐方法。
作者特別注重源代碼的可讀性,詳細討論了類和函數(shù)命名、變量命名、數(shù)據(jù)類型和控制結(jié)構(gòu)、代碼布局等編程的最基本要素,也討論了防御式編程、表驅(qū)動法、協(xié)同構(gòu)建、開發(fā)者測試、性能優(yōu)化等有效開發(fā)實踐,這些都服務(wù)于軟件的首要技術(shù)使命:管理復(fù)雜度。為了培養(yǎng)程序員編寫高質(zhì)量代碼的習(xí)慣,書中展示了大量高質(zhì)量代碼示例(以及用作對比的低質(zhì)量代碼),提高軟件質(zhì)量是降低開發(fā)成本的重要途徑。除此之外,本書歸納總結(jié)了來自專家的經(jīng)驗、業(yè)界研究以及學(xué)術(shù)成果,列舉了大量軟件開發(fā)領(lǐng)域的真實案例與統(tǒng)計數(shù)據(jù),提高本書的說服力。
本書中所論述的技術(shù)不僅填補了初級與高級編程實踐之間的空白,而且也為程序員們提供了一個有關(guān)軟件開發(fā)技術(shù)的信息來源。本書對經(jīng)驗豐富的程序員、技術(shù)帶頭人、自學(xué)的程序員及沒有太多編程經(jīng)驗的學(xué)生都是大有裨益的??梢哉f,只要您具有一定的編程基礎(chǔ),想成為一名優(yōu)秀的程序員,閱讀本書都不會讓您失望。
作者簡介
史蒂夫·邁克康奈爾(Steve
McConnell)被公認為軟件開發(fā)社區(qū)中的首要作者和發(fā)言人之一。他是Construx
Software公司的首席軟件工程師。他所編著的圖書包括曾被《軟件開發(fā)》雜志授予優(yōu)異產(chǎn)品震撼大獎的《代碼大全》和《快速軟件開發(fā)》,以及《軟件項目生存指南》等。
書籍目錄
前言
鳴謝
核對表目錄
表目錄
圖目錄
第1部分 打好基礎(chǔ)
第1章 歡迎進入軟件構(gòu)建的世界“
1.1 什么是軟件構(gòu)建
1.2 軟件構(gòu)建為何如此重要
1.3 如何閱讀本書
第2章 用隱喻來更充分地理解軟件開發(fā)
2.1 隱喻的重要性
2.2 如何使用軟件隱喻
2.3 常見的軟件隱喻
第3章 三思而后行:前期準備
3.1 前期準備的重要性
3.2 辨明你所從事的軟件的類型
3.3 問題定義的先決條件
3.4 需求的先決條件
3.5 架構(gòu)的先決條件
3.6 花費在前期準備上的時間長度
第4章 關(guān)鍵的“構(gòu)建”決策
4.1 選擇編程語言
4.2 編程約定
4.3 你在技術(shù)浪潮中的位置
4.4 選擇主要的構(gòu)建實踐方法
第5章 軟件構(gòu)建中的設(shè)計
5.1 設(shè)計中的挑戰(zhàn)
5.2 關(guān)鍵的設(shè)計概念
5.3 設(shè)計構(gòu)造塊:啟發(fā)式方法
5.4 設(shè)計實踐
5.5 對流行的設(shè)計方法的評論
第6章 可以工作的類
6.1 類的基礎(chǔ):抽象數(shù)據(jù)類型(ADTs)
6.2 良好的類接口
6.3 有關(guān)設(shè)計和實現(xiàn)的問題
6.4 創(chuàng)建類的原因
6.5 與具體編程語言相關(guān)的問題
6.6 超越類:包
第7章 高質(zhì)量的子程序
7.1 創(chuàng)建子程序的正當理由
7.2 在子程序?qū)由显O(shè)計
7.3 好的子程序名字
7.4 子程序可以寫多長
7.5 如何使用子程序參數(shù)
7.6 使用函數(shù)時要特別考慮的問題
7.7 宏子程序和內(nèi)聯(lián)子程序
第8章 防御式編程
8.1 保護程序免遭非法輸入數(shù)據(jù)的破壞
8.2 斷言
8.3 錯誤處理技術(shù)
8.4 異常
8.5 隔離程序,使之包容由錯誤造成的損害
8.6 輔助調(diào)試的代碼
8.7 確定在產(chǎn)品代碼中該保留多少防御式代碼
8.8 對防御式編程采取防御的姿態(tài)
第9章 偽代碼編程過程
9.1 創(chuàng)建類和子程序的步驟概述
9.2 偽代碼
9.3 通過偽代碼編程過程創(chuàng)建子程序
9.4 偽代碼編程過程的替代方案
第3部分 變量
第10章 使用變量的一般事項
10.1 數(shù)據(jù)認知
10.2 輕松掌握變量定義
10.3 變量初始化原則
10.4 作用域
10.5 持續(xù)性
10.6 綁定時間
10.7 數(shù)據(jù)類型和控制結(jié)構(gòu)之問的關(guān)系
10.8 為變量指定單一用途
第11章 變量名的力量
11.1 選擇好變量名的注意事項
11.2 為特定類型的數(shù)據(jù)命名
11.3 命名規(guī)則的力量
11.4 非正式命名規(guī)則
11.5 標準前綴
11.6 創(chuàng)建具備可讀性的短名字
11.7 應(yīng)該避免的名字
第12章 基本數(shù)據(jù)類型
12.1 數(shù)值概論
12.2 整數(shù)
12.3 浮點數(shù)
12.4 字符和字符串
12.5 布爾變量
12.6 枚舉類型
12.7 具名常量
12.8 數(shù)組
12.9 創(chuàng)建你自己的類型(類型別名)
第13章 不常見的數(shù)據(jù)類型
13.1 結(jié)構(gòu)體
……
第4部分 語句
第5部分 代碼改善
第6部分 系統(tǒng)考慮
第7部分 軟件工藝
參考文獻
索引
章節(jié)摘錄
書摘 相對于前面那個呆板的用寫作所做的隱喻,一些軟件開發(fā)人員則認為應(yīng)當將創(chuàng)造軟件想象成類似播種和耕作的情形。你一次設(shè)計系統(tǒng)的一小部分、寫出一段代碼、做一點測試,并將成果一點點添加到整個系統(tǒng)中。通過這種小步前進,你可以把每次可能遇到的麻煩減到最小。 有時候人們會用很糟的隱喻去描述一種很好的技術(shù),此時需要保全這一技術(shù),并去尋找更好的隱喻。這個例子里的增量技術(shù)是很有價值的,但把它比作播種和耕作卻非常糟糕?! 懊看巫鲆稽c”這個主意可能在某些方面與農(nóng)作物生長類似,但把軟件開發(fā)類比為耕作就很不貼切,也沒有太多意義,而且我們很容易用下面即將介紹的更好的隱喻替代它。人們也很難把耕作這個隱喻引申到“一次做一點事情”之外?! ∪绻阏J同耕作這種隱喻,就請想象一下圖2—2的情況:你會發(fā)現(xiàn)自己談?wù)摰氖牵簩ο到y(tǒng)計劃施肥、對細節(jié)設(shè)計疏果,并通過有效的管理土地來增加代碼的產(chǎn)量,最終取得代碼大豐收。你還會說“輪種C++和大麥”,或者讓土地閑置一年以增加硬盤里面氮肥的供應(yīng)量?! ≤浖鬟@一隱喻的弱點在于它暗示了人們將無法對開發(fā)軟件的過程和方式進行任何直接的控制。你在春天播下代碼的種子,然后按照農(nóng)歷節(jié)氣向土地佬兒許幾個愿,你將會在秋天收獲到豐盛的代碼。P14-15看《代碼大全》鬧程序革命!
媒體關(guān)注與評論
書評“《代碼大全》第1版在我看來堪稱軟件工程領(lǐng)域的經(jīng)典之作一而第2版則更棒!” ——Ralph Johnson,伊利諾伊州立大學(xué); 《設(shè)計模式》(Design Patterns)作者之一 “無論您是新手還是經(jīng)驗豐富的開發(fā)人員,《代碼大全》(第2版)都能教會您思考編程的最佳方法?!? ——Jeffrey Richter(www.wintetlect.com),((Microsoft NET框架實用編程》(Appfied Microsoft.NET FrameworkProgramming)作者 “這本書是講述軟件構(gòu)建的權(quán)威指南一準備孤身前往荒島的程序員只要帶上這本書就足夠了?!? ——Diomidis Spinellis,《代碼閱讀方法與實踐》(Code Reading:The Open Source Perspective)作者 “Steve McConnell是一位既在一線實踐,又能把其中奧妙講個明白的少數(shù)人之一。” ——John Vlissides,IBM研究院; 《設(shè)計模式》(Design Patterns)作者之一 “Steve McConnell比任何人都懂得如何構(gòu)建軟件;我們十分慶幸他能把其所有的深邃見解和實踐經(jīng)驗寫成這樣一本重要而新穎的圖書?!? ——“Visual Basic之父”Alan Cooper,《軟件觀念革命》(About Face 2.0)作者
編輯推薦
兩屆震撼大獎得主,數(shù)十年軟件開發(fā)智慧,十二年前的經(jīng)典,十二年后再鑄輝煌!《代碼大全(第2版)》——Amazon全五星一致推薦!開發(fā)者必讀著作!圖書館必備典藏!
名人推薦
“《代碼大全》第1版在我看來堪稱軟件工程領(lǐng)域的經(jīng)典之作——而第2版則更棒!” ——Ralph Johnson,伊利諾伊州立大學(xué);《設(shè)計模式》(Design Pattems)作者之一 “無論您是新手還是經(jīng)驗豐富的開發(fā)人員, 《代碼大全》(第2版)都能教會您思考編程的最佳方法?!?——Jeffrey Richter,《Microsoft.NET框架實用編程》(Applied Microsoft.NET Framework Programming)作者 “這本書是講述軟件構(gòu)建的權(quán)威指南——準備孤身前往荒島的程序員只要帶上這本書就足夠了?!?——Diomidis Spinellis,《代碼閱讀方法與實踐》(Code Reading:The Open Source Perspective)作者 “Steve McConnell是一位既在一線實踐,又能把其中奧妙講明白的少數(shù)人之一。” ——John Vlissides,IBM研究院;《設(shè)計模式》(Design Patterns)作者之一 ”Steve McConnell比任何人都懂得如何構(gòu)建軟件;我們十分慶幸他能把其所有的深邃見解和實踐經(jīng)驗寫成這樣一本重要而新穎的圖書?!?——“Visual Basic之父”Alan Cooper,《軟件觀念革命》(About Face 2.0)作者
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載