代碼大全(第2版)

出版時間: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

評論、評分、閱讀與下載


    代碼大全(第2版) PDF格式下載


用戶評論 (總計139條)

 
 

  •   代碼大全——兩屆Software Jolt Award震撼大獎得主!軟件開發(fā)世界的地圖,經(jīng)典中的經(jīng)典 代碼大全——兩屆Software Jolt Award震撼大獎得主!軟件開發(fā)世界的地圖,經(jīng)典中的經(jīng)典
  •   以前從來沒有聽說過這些書,自從知道了這些經(jīng)典書的存在后,我一口氣買了八本。代碼大全是我開始看的第一本,非常非常贊,書中講的編程思想特別實用,特別中肯。以前我以為編碼是件隨意的事情,是要靠自己去悟的(⊙﹏⊙b汗),開始看這本書之后,覺得編碼不是那么簡單的,它所涵蓋的內(nèi)容方方面面,借鑒別人強大的編程技術(shù),比自己苦苦思索要實惠多了。書中講的每句話都值得仔細推敲,并不是看完就可以放一邊了,而要自己去思考,去實踐,去總結(jié)。真正把書中講的知識放進自己的“工具箱”,用的時候能信手拈來。這就是我一個菜鳥的想法,希望自己的技術(shù)能快快提高~Fighting!再次感謝翻譯人員,zzang!
  •   書名叫《代碼大全》太容易誤導(dǎo)人了,我還以為是一部實用代碼庫呢,建議更名為《軟件編程思想與實踐》。

    Peter
  •   任何想成為程序員的人必看的一本書,其中的偽代碼編程、命名規(guī)范部、代碼排版部分等等都是經(jīng)典!
  •   評價如下:
    1.紙品和印刷質(zhì)量上乘,線裝,用墨均勻;
    2.本人目前只閱讀了該書的第七部分__軟件工藝。對內(nèi)容評價如右:作者引經(jīng)據(jù)典形成的軟件工藝Tips具有權(quán)威性、可信性和實用性。
    本人評價只針對本人從當當網(wǎng)購得的《代碼大全2》。
  •   該書以最優(yōu)化軟件設(shè)計的思路介紹了代碼書寫,程序設(shè)計的方方面面,對于從事軟件開發(fā)和實現(xiàn)人員很有參考價值。
  •   書如其名,大全,幾乎囊括了軟件開發(fā)的各個階段。很適合系統(tǒng)的學(xué)習(xí)軟件的構(gòu)建過程
  •   這本書和任何一本軟件書都不一樣,程序員絕對值得擁有,后悔沒有早點看到,待修煉啊它不是談?wù)撘环N具體的技術(shù),反正我買的時候是因為目前項目非常混亂,從需求到架構(gòu)再到編碼規(guī)范,沒有一個是有用的。因為在小公司,頭也不給力,自己水平有限。沒有辦法,很想找到能幫助我重新梳理的書,包括該從什么方面考慮軟件架構(gòu)、包括程序怎么分層,怎么模塊化,編碼風格如何統(tǒng)一,單元測試驅(qū)動編程是怎么一回事blabla的。。。沒看完,但我覺得這本書應(yīng)該能解決問題
  •   你果想成為優(yōu)秀的程序員,這是一本必讀的書。當然你不要被翻譯的中文書名所迷惑,這本書不是針對某門語言來講的,也不是講程序算法之類的技巧的。它主要是針對代碼質(zhì)量來講的,所以無論你是程序老鳥還是菜鳥,希望你都能認真的多讀幾遍,這不是那種看一遍就可以丟到一邊的書……
  •   作為一個即將步入軟件開發(fā)行業(yè)的人,這本堪稱行業(yè)圣經(jīng)的書是必須一看的,扎扎實實看看書,明天才能寫出更好的代碼。
  •   對于這個本“代碼大全”,我唯一感到遺憾的就是這么遲才想起來買來看。經(jīng)典啊
  •   經(jīng)典中的經(jīng)典。高質(zhì)量代碼必讀之物。大家都說了,這里就不必啰嗦了。
  •   代碼大全講述的是方法 思路
  •   代碼大全,通向大師必看之書,非常好??!
  •   本書絕對是一本可以隨時隨地隨心所欲翻閱的隨身寶典,就算不能一一記牢,只一步一步按照書中所示去做,也會發(fā)現(xiàn)代碼質(zhì)量在一點一點提高,自己看著都爽。
  •   代碼大全當然是好書。
  •   代碼大全!
  •   很喜歡閱讀和收藏經(jīng)典的技術(shù)書籍,這本書不錯,可以從編程思想上有所改進,適合各個階段的所有程序員,共勉
  •   從開始項目的構(gòu)建開始描述軟件開發(fā)過程中遇到的種種問題,以及解決辦法。
  •   內(nèi)容非常豐富,既不會是理論概念一篇那種,也不是一個代碼工具。是實實在在的經(jīng)驗。說得很到位。
  •   感覺像是對代碼規(guī)范 章程的深厚積累后的經(jīng)驗 沒有太多知識 適合當百科全書在需要時翻閱
  •   之前在網(wǎng)上對本書有了大概的了解,本書在軟件設(shè)計和編程領(lǐng)域有獨到的見解和精辟的論述。這次在本店購得此書,一定要從頭至尾認真仔細地反復(fù)閱讀幾遍,相信自己能夠從中獲得相當多收益。
  •   看了下,適合有一定工作經(jīng)驗的人看,不是講具體代碼的。
  •   書中內(nèi)容講了軟件構(gòu)建的方方面面,很多內(nèi)容都值得我們?nèi)ニ伎?,非常有價值,無論是新手還是技術(shù)水平已經(jīng)不錯的人都適合!!!
  •   剛拿到?jīng)]多久,看了六章左右,發(fā)現(xiàn)還是非常不錯的。對編寫代碼有思想上的幫助,如果再結(jié)合設(shè)計模式類的書會更有幫助。另外書的印刷也很好,很滿意。
  •   這本書是每個程序員應(yīng)當看一遍的書,對各個細節(jié)的分析和總結(jié)會改變你的編程習(xí)慣
  •   不用說自己想要了,整個公司人手一本啊!無語了!想要寫好代碼,請看它!
  •   編寫大量代碼后,會有所迷茫么?該書將會引導(dǎo)你的方向,解答你心中可能會出現(xiàn)的困惑 不可多得的好書
  •   講的很細,從各方面講述一個開發(fā)者應(yīng)該注意的,對自身代碼規(guī)范等方面幫助很大
  •   本書詳細介紹了編程中的各種問題,特別是構(gòu)建時的問題,這本書就是編程的百科全書,只要有問題就可以翻看。它不是基于某一種語言的,介紹的是思想
  •   確實是本好書,剛到手,包裝沒我想想的好,不過好在內(nèi)容夠吸引人
    里面的示例代碼以Java,C++和VB為主,準備購買的朋友要考慮好~
  •   神級書!是程序員~是軟件工程師必須得看的書?。。?/li>
  •   軟件開發(fā)世界的地圖,經(jīng)典中的經(jīng)典
  •   有點難看懂!對各類語言代碼進行了分析應(yīng)用!不過推薦基礎(chǔ)比較牛的人看!
  •   里面的實例代碼使用各種語言寫的,具體內(nèi)容還沒看,不知道好不好,不過大家都推薦。
  •   這本書對我組織代碼有非常大的益處!
  •   就喜歡沒事研究研究代碼
  •   很好的書 很久就聽過 最近寫代碼遇到瓶頸 所以買本進修下
  •   代碼的百科全書
  •   代碼挺全的
  •   講解很細,著重講解思想而不是代碼!值得一看
  •   書的質(zhì)量非常高(內(nèi)容和紙張);老外寫的書真是很用心,這本書適合每一個程序員
  •   非常經(jīng)典的書,值得反復(fù)閱讀。
    如果周圍的同事都看過這本書,就不會那么痛苦了
    如果所有的程序員都看過這本書,這個世界就真的和諧了。
  •   這本書介紹了軟件開發(fā)過程的方方面面,而且給出了很具參考性的建議。
  •   適合基本上所有的軟件開發(fā)人員去看,更適合想提高的人員去看。
  •   書寫的很好,涵蓋了軟件開發(fā)的各個方面,很全面,推薦購買!
  •   發(fā)貨很快。

    書印刷質(zhì)量上佳,贊一個!

    關(guān)鍵是書的內(nèi)容對于程序員提升內(nèi)力是相當不錯的,“九陽神功”!
  •   有時鞏固了你以前已經(jīng)思考出來結(jié)果,有時解答了你以前猶豫的問題,這是本教你寫出高質(zhì)量程序的書。非針對特定語言,而是對面向構(gòu)建程序時遇到的普遍性問題給出了指導(dǎo)性的方法和原則,是我需要的書。
  •   這本書是我讀過的最好的計算機圖書之一,但建議初學(xué)者不要讀,因為內(nèi)容以經(jīng)驗居多,沒有編程的1、2、3、4、5,有的是智慧。另外這本書不是教材,而像是一篇隨筆
  •   印刷不錯,內(nèi)容經(jīng)典,適合程序員收藏
  •   什么都講了,軟件開發(fā)相關(guān)職業(yè)都能找到對應(yīng)的部分。就是書太厚,看著壓力打,犯困。。
  •   一直聽說這本書,可當了兩年的程序員了還是沒有找出機會來仔細看一看,這確實是一本很好的書,是每一個程序員都值得去花心思看的書!
  •   Jolt大獎,無數(shù)好評。我想不用什么贅述了。
  •   語言簡練有趣,干貨也多,適合初學(xué)者,或者想重頭梳理軟件開發(fā)知識的老手
  •   它把開發(fā)編程的細節(jié)講得詳細,是本很好的必備書。
  •   軟件開發(fā)中的神書,非常好 支持
  •   如果你想成為一名優(yōu)秀的程序員,而不是只想做個碼農(nóng),去看這本書吧.......
  •   對于這樣的經(jīng)典圖書,編程人員必須經(jīng)常溫習(xí)。
  •   書很經(jīng)典,開闊思路。用到哪里看哪里,不必從頭到尾看完。
    個人覺得,書中講的不是技術(shù),而更重要的是告訴你正確的觀念,對一些細節(jié)方面正確的做法,經(jīng)驗性很強,適合有經(jīng)驗的人,碰到過類似問題的人仔細閱讀。
    總之,很經(jīng)典。
  •   不論在做何種軟件開發(fā) 對你來說都是一本好書
  •   不管是軟件開發(fā)人員還是管理人員都可以找到你所需要的,不錯的書,值得學(xué)習(xí)收藏
  •   書很厚很重,知識點也較詳細,仔細研讀將對自己的軟件水平有很大的提高。
  •   作為一名程序員,此書是必備的,作為一本手冊,隨時查閱,非常有用
  •   長期軟件開發(fā)的人必備
  •   對此書是早有耳聞,作為程序員必修的十大著作之一,沒有理由不去擁有,讀懂此書,對程序的設(shè)計思想將有更深層次的理解。
  •   非常實用的IT編程書籍,詳細,全面,可以全面提高編程能力。純屬騙積分,請勿參考
  •   對于初學(xué)或有經(jīng)驗的程序員都很有幫助
  •   編程2年了,有一些迷茫的問題,希望能從高人的經(jīng)驗里得到解決,支持本書
  •   一個程序員離優(yōu)秀的距離就在這本書
  •   書涵蓋的內(nèi)容很廣,內(nèi)容涵蓋了編程思想、編程風格、架構(gòu)等方方面面,值得一讀。
  •   這是一本程序員可以帶到孤島上的唯一一本書,值得多次閱讀的一本書
  •   剛看了前3章,感覺收獲很大,系統(tǒng)地講解了編程各階段的注意事項,很實用
  •   這本書毋庸置疑,是對程序員很有啟發(fā)的書,適合各個階段的人
  •   這是一本很好的軟件工程的書籍,如果你不想一直當程序,請看這本書吧。它會給你很多幫助的。
  •   程序員必備,常讀常新。
  •   這本書適合所有軟件工作人員
  •   軟件工程師必學(xué)
  •   jolt出品 絕對經(jīng)典
  •   如果說大學(xué)老師只教了語言的語法的話,那么這本書告訴我們怎么運行這些編程語言才能編出更好的程序。
  •   內(nèi)容專業(yè),適合程序員細細揣摩。
  •   這些天一直很忙,忘記評價了。快遞有些慢不過不能接受,畢竟東北這邊下雪交通不太方便可以理解:)之前沒有地方寫些要求什么的,還擔心會不會給我寄本卷頁之類的書呢,不過接到后發(fā)現(xiàn)這些擔心完全沒有必要,書很新,根本沒有什么卷頁破損什么的。很開心!
    看了幾章,感覺不錯。作者寫得很通俗,有些地方還舉些有趣的例子。感覺很貼近讀者。唯獨覺得價格好像比原先第二版貴了。
    總之這次購物很滿意。
  •   書很厚, 但是很實用 各種編程語言都有
  •   程序員必須書籍之一啊
  •   程序員必修之道
  •   超級厚,程序員必備此書
  •   別人推薦的,然后買的,很不錯,程序員必看。
  •   軟件領(lǐng)域的葵花寶典
  •   剛開始讀,但是聽說這本書非常好,正在進一步學(xué)習(xí)。希望喜歡編程的朋友都看看。
  •   確實非常有用,所有學(xué)習(xí)編程的人都應(yīng)該看看
  •   一直想買這本書,礙于價格太貴,遲遲未下手。這次當當做活動,果斷拿下,可是最后幾頁居然裂開,不知是沒裝訂好還是工作人員不小心撕裂了,心疼啊!希望書本的內(nèi)容能讓我大有裨益吧!
  •   對于了解軟件研發(fā)全過程有很大的幫助
  •   看了好久才看完,有些內(nèi)容讓人醍醐灌頂,糾正了好多之前的編程陋習(xí)
  •   什么叫做經(jīng)典,我想這本書就可以說明這兩字的意義。。真得非常好,慢慢品味,經(jīng)久耐看。
  •   當當?shù)姆?wù)整體4.9,扣分原因是因為書到貨有點卷邊,這個我可以理解。書本身沒的說,經(jīng)典。
  •   覺得像是編程人員 的一本字典,感覺很有用~~
  •   編程人士必備書,看一遍收獲一遍。
  •   都說這本書很經(jīng)典,想買好久了,今天終于出手了,太貴
  •   送貨很快,書的質(zhì)量也很好,這次活動買的太值了。目前還沒開始看,心得以后再寫吧。
  •   當當?shù)呐渌退俣群每?。書質(zhì)量也不錯,好厚的一本書,還沒開始看。
  •   經(jīng)典書籍,開發(fā)必備
    終于到貨,趕快搶購
 

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

京ICP備13047387號-7