代碼大全(第2版)(博文視點(diǎn)出品)

2021-04-26 21:06 更新

代碼大全(第2版)(博文視點(diǎn)出品)

[美] Steve,[美] McConnell 著,金戈,湯凌,陳碩,張菲 譯

  • 出版社: 電子工業(yè)出版社
  • ISBN:9787121022982
  • 版次:2
  • 商品編碼:10875285
  • 品牌:博文視點(diǎn)
  • 包裝:平裝
  • 開本:16開
  • 出版時(shí)間:2011-09-01
  • 用紙:膠版紙
  • 頁數(shù):944


點(diǎn)此購買


編輯推薦

代碼構(gòu)建也兼具藝術(shù)性和思想性!

《代碼大全(第二版)》經(jīng)典重塑,2011版,仍然是一本完整的軟件構(gòu)建手冊(cè),涵蓋了軟件構(gòu)建過程中的所有細(xì)節(jié)!是著名IT暢銷書作者Steve McConnell十一年前的經(jīng)典著作的全新演繹,該作者是兩屆Software Development Magzine Jolt Award震撼大獎(jiǎng)得主。兩屆震撼大獎(jiǎng)得主,數(shù)十年軟件開發(fā)智慧,十二年前的經(jīng)典,十二年后再鑄輝煌!


內(nèi)容簡(jiǎn)介

代碼大全(第2版)是著名Ⅱ暢銷書作者、《IEEESoftware》雜志前主編、具有20年編程與項(xiàng)目管理經(jīng)驗(yàn)的SteveMcConneU十余年前的經(jīng)典著作的全新演繹:第2版做了全面的更新,增加了很多與時(shí)俱進(jìn)的內(nèi)容,包括對(duì)新語言、新的開發(fā)過程與方法論的討論,等等。這是一本百科全書式的軟件構(gòu)建手冊(cè),涵蓋了軟件構(gòu)建活動(dòng)的方方面面,尤其強(qiáng)調(diào)提高軟件質(zhì)量的種種實(shí)踐方法。

作者特別注重源代碼的可讀性,詳細(xì)討論了類和函數(shù)命名、變量命名、數(shù)據(jù)類型和控制結(jié)構(gòu)、代碼布局等編程的基本要素,也討論了防御式編程、表驅(qū)動(dòng)法、協(xié)同構(gòu)建、開發(fā)者測(cè)試、性能優(yōu)化等有效開發(fā)實(shí)踐,這些都服務(wù)于軟件的技術(shù)使命:管理復(fù)雜度。為了培養(yǎng)程序員編寫高質(zhì)量代碼的習(xí)慣,書中展示了大量高質(zhì)量代碼示例(以及用作對(duì)比的低質(zhì)量代碼),提高軟件質(zhì)量是降低開發(fā)成本的重要途徑。除此之外,本書歸納總結(jié)了來自專家的經(jīng)驗(yàn)、業(yè)界研究以及學(xué)術(shù)成果,列舉了大量軟件開發(fā)領(lǐng)域的真實(shí)案例與統(tǒng)計(jì)數(shù)據(jù),提高本書的說服力。

本書中所論述的技術(shù)不僅填補(bǔ)了初級(jí)與高級(jí)編程實(shí)踐之間的空白,而且也為程序員們提供了一個(gè)有關(guān)軟件開發(fā)技術(shù)的信息來源。本書對(duì)經(jīng)驗(yàn)豐富的程序員、技術(shù)帶頭人、自學(xué)的程序員及沒有太多編程經(jīng)驗(yàn)的學(xué)生都是大有裨益的??梢哉f,只要您具有一定的編程基礎(chǔ),想成為一名優(yōu)秀的程序員,閱讀本書都不會(huì)讓您失望。


作者簡(jiǎn)介

  Steve,Mc Connell,被公認(rèn)為軟件開發(fā)社區(qū)中的首要作者和發(fā)言人之一。他是ConstruxSoftware公司的首席軟件工程師。他所編著的圖書包括曾被SoftwareDevelopment雜志授予優(yōu)異產(chǎn)品震撼大獎(jiǎng)(JoltAwardforproductexcellence)的《代碼大全》(CodeComplete)和《快速軟件開發(fā)》(RapidDevelopment),以及《軟件項(xiàng)目生存指南》(SoftwareProtectSurvivalGuide)和《專業(yè)軟件開發(fā)》(ProfessionalSoftwareDevelopment)等等。


精彩書評(píng)

  “《代碼大全》第1版在我看來堪稱軟件工程領(lǐng)域的經(jīng)典之作——而第2版則更棒!”

  ——Ralph Johnson,伊利諾伊州立大學(xué);《設(shè)計(jì)模式》(Design Pattems)作者之一

  “無論您是新手還是經(jīng)驗(yàn)豐富的開發(fā)人員, 《代碼大全》(第2版)都能教會(huì)您思考編程的方法?!?/p>

  ——Jeffrey Richter,《Microsoft.NET框架實(shí)用編程》(Applied Microsoft.NET Framework Programming)作者

  “這本書是講述軟件構(gòu)建的指南——準(zhǔn)備孤身前往荒島的程序員只要帶上這本書就足夠了?!?/p>

  ——Diomidis Spinellis,《代碼閱讀方法與實(shí)踐》(Code Reading:The Open Source Perspective)作者

  “Steve McConnell是一位既在一線實(shí)踐,又能把其中奧妙講明白的少數(shù)人之一?!?/p>

  ——John Vlissides,IBM研究院;《設(shè)計(jì)模式》(Design Patterns)作者之一

  ”Steve McConnell比任何人都懂得如何構(gòu)建軟件;我們十分慶幸他能把其所有的深邃見解和實(shí)踐經(jīng)驗(yàn)寫成這樣一本重要而新穎的圖書。”

  ——“Visual Basic之父”Alan Cooper,《軟件觀念革命》(About Face 2.0)作者



前言
鳴謝
核對(duì)表目錄
表目錄
圖目錄
第1部分 打好基礎(chǔ)
第1章 歡迎進(jìn)入軟件構(gòu)建的世界“
1.1 什么是軟件構(gòu)建
1.2 軟件構(gòu)建為何如此重要
1.3 如何閱讀本書

第2章 用隱喻來更充分地理解軟件開發(fā)
2.1 隱喻的重要性
2.2 如何使用軟件隱喻
2.3 常見的軟件隱喻

第3章 三思而后行:前期準(zhǔn)備
3.1 前期準(zhǔn)備的重要性
3.2 辨明你所從事的軟件的類型
3.3 問題定義的先決條件
3.4 需求的先決條件
3.5 架構(gòu)的先決條件
3.6 花費(fèi)在前期準(zhǔn)備上的時(shí)間長(zhǎng)度

第4章 關(guān)鍵的“構(gòu)建”決策
4.1 選擇編程語言
4.2 編程約定
4.3 你在技術(shù)浪潮中的位置
4.4 選擇主要的構(gòu)建實(shí)踐方法

第5章 軟件構(gòu)建中的設(shè)計(jì)
5.1 設(shè)計(jì)中的挑戰(zhàn)
5.2 關(guān)鍵的設(shè)計(jì)概念
5.3 設(shè)計(jì)構(gòu)造塊:?jiǎn)l(fā)式方法
5.4 設(shè)計(jì)實(shí)踐
5.5 對(duì)流行的設(shè)計(jì)方法的評(píng)論

第6章 可以工作的類
6.1 類的基礎(chǔ):抽象數(shù)據(jù)類型(ADTs)
6.2 良好的類接口
6.3 有關(guān)設(shè)計(jì)和實(shí)現(xiàn)的問題
6.4 創(chuàng)建類的原因
6.5 與具體編程語言相關(guān)的問題
6.6 超越類:包

第7章 高質(zhì)量的子程序
7.1 創(chuàng)建子程序的正當(dāng)理由
7.2 在子程序?qū)由显O(shè)計(jì)
7.3 好的子程序名字
7.4 子程序可以寫多長(zhǎng)
7.5 如何使用子程序參數(shù)
7.6 使用函數(shù)時(shí)要特別考慮的問題
7.7 宏子程序和內(nèi)聯(lián)子程序

第8章 防御式編程
8.1 保護(hù)程序免遭非法輸入數(shù)據(jù)的破壞
8.2 斷言
8.3 錯(cuò)誤處理技術(shù)
8.4 異常
8.5 隔離程序,使之包容由錯(cuò)誤造成的損害
8.6 輔助調(diào)試的代碼
8.7 確定在產(chǎn)品代碼中該保留多少防御式代碼
8.8 對(duì)防御式編程采取防御的姿態(tài)

第9章 偽代碼編程過程
9.1 創(chuàng)建類和子程序的步驟概述
9.2 偽代碼
9.3 通過偽代碼編程過程創(chuàng)建子程序
9.4 偽代碼編程過程的替代方案

第3部分 變量
第10章 使用變量的一般事項(xiàng)
10.1 數(shù)據(jù)認(rèn)知
10.2 輕松掌握變量定義
10.3 變量初始化原則
10.4 作用域
10.5 持續(xù)性
10.6 綁定時(shí)間
10.7 數(shù)據(jù)類型和控制結(jié)構(gòu)之問的關(guān)系
10.8 為變量指定單一用途

第11章 變量名的力量
11.1 選擇好變量名的注意事項(xiàng)
11.2 為特定類型的數(shù)據(jù)命名
11.3 命名規(guī)則的力量
11.4 非正式命名規(guī)則
11.5 標(biāo)準(zhǔn)前綴
11.6 創(chuàng)建具備可讀性的短名字
11.7 應(yīng)該避免的名字

第12章 基本數(shù)據(jù)類型
12.1 數(shù)值概論
12.2 整數(shù)
12.3 浮點(diǎn)數(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部分 軟件工藝
參考文獻(xiàn)
索引


精彩書摘

  數(shù)據(jù)純化論者有時(shí)爭(zhēng)論說,程序員應(yīng)該絕不使用全局?jǐn)?shù)據(jù),但是按照“全局?jǐn)?shù)據(jù)”這一術(shù)語的廣義解釋,大多數(shù)程序都使用了它。存在于數(shù)據(jù)庫中的數(shù)據(jù)是全局?jǐn)?shù)據(jù),存在于配置文件如Windows注冊(cè)表中的數(shù)據(jù)也是。具名常量也是全局?jǐn)?shù)據(jù),只不過不是全局變量罷了。
  如果遵循使用的原則,那么全局變量在一些場(chǎng)合下也是有用的。
  保存全局?jǐn)?shù)值有時(shí)候你會(huì)有一些在概念上用于整個(gè)程序的數(shù)據(jù)。這可能是一個(gè)用于表示程序狀態(tài)的變量——例如,交互式模式或者命令行模式、正常模式或者錯(cuò)誤恢復(fù)模式等的模式標(biāo)識(shí)。也可能是在整個(gè)程序里面要用到的信息——例如,程序中的每一個(gè)子程序都會(huì)用到的數(shù)據(jù)表。
  模擬具名常量盡管C++、Java、Visual Basic和多數(shù)現(xiàn)代語言都支持具名常量,但是Python、Perl、Awk以及UNIX shell腳本等語言卻不支持。當(dāng)你的語言不支持具名常量的時(shí)候,你可以用全局變量代替它們。例如,你可以用取值分別為1和0的全局變量TRUE和FALSE來代替字面量1和0,或者用LINSES_PER_PAGE=66代表每頁行數(shù)的66。一旦采用了這種方法,那么日后再修改代碼就會(huì)更容易了,而且這樣的代碼會(huì)更方便閱讀。貫徹這種對(duì)全局?jǐn)?shù)據(jù)的使用原則是在一種語言上編程(programming in a language)和深入一種語言去編程(programming into a language)之間差異的一個(gè)主要示例,第34.4節(jié)“深入一門語言去編程,不浮于表面”對(duì)此有深入探討。
  模擬枚舉類型你還可以在Python等不直接支持枚舉類型的語言里用全局變量來模擬枚舉類型。
  簡(jiǎn)化對(duì)極其常用的數(shù)據(jù)的使用有的時(shí)候你會(huì)大量地引用一個(gè)變量,以致于它幾乎出現(xiàn)在你所編寫的每一個(gè)子程序的參數(shù)列表里。與其將它包含在每一個(gè)參數(shù)列表里面,不如把它設(shè)置成全局變量。不過,事實(shí)上很少會(huì)出現(xiàn)代碼到處訪問某一個(gè)變量的情形。通常該變量是由為數(shù)不多的一組子程序來訪問的,你可以把這些子程序以及它們所用到的數(shù)據(jù)整合進(jìn)一個(gè)類里面。下面會(huì)就這一問題展開討論。
  消除流浪數(shù)據(jù)有的時(shí)候你把數(shù)據(jù)傳遞給一個(gè)子程序或者類,僅僅是因?yàn)橄胍阉鼈鬟f給另一個(gè)子程序或者類。例如,你可能有一個(gè)在每個(gè)子程序里都使用的錯(cuò)誤處理對(duì)象。當(dāng)調(diào)用鏈中間的子程序并不使用這一對(duì)象的時(shí)候,這一對(duì)象就被稱為“流浪數(shù)據(jù)(tramp data)”。使用全局變量可以消除流浪數(shù)據(jù)。
  Use Global Data Only as a Last Resort
  只有萬不得已時(shí)才使用全局?jǐn)?shù)據(jù)
  在你選擇使用全局?jǐn)?shù)據(jù)之前,請(qǐng)考慮下面這些替換方案。
  首先把每一個(gè)變量設(shè)置為局部的,僅當(dāng)需要時(shí)才把變量設(shè)置為全局的 開始的時(shí)候先把所有的變量設(shè)置為單一子程序內(nèi)部的局部變量。如果你發(fā)現(xiàn)還需要在其他位置用到它們,那么在一舉把它們轉(zhuǎn)變成全局變量之前,先把它們轉(zhuǎn)變?yōu)轭惱锏膒rivate或者protected變量。如果你最終發(fā)現(xiàn)必須要把它們轉(zhuǎn)變成全局變量,那么就轉(zhuǎn)變它們。不過請(qǐng)先確定除此之外別無選擇。如果你一開始就把變量設(shè)置為全局的,那么你將永遠(yuǎn)不可能把它轉(zhuǎn)變成局部的;反之,如果你開始時(shí)把變量設(shè)置為局部的,那么你可能永遠(yuǎn)也不需要把它轉(zhuǎn)變成全局的。
  區(qū)分全局變量和類變量有些變量由于要被整個(gè)程序訪問,因此是真正的全局變量。其他只在一組特定的子程序里被頻繁使用的實(shí)際是類變量。在頻繁使用某個(gè)類變量的子程序組里,你可以采用任何希望的方式來訪問它。如果類外部的子程序需要使用該變量,那么就用訪問器子程序來提供對(duì)該變量的訪問。不要直接訪問類變量——好像它們是全局變量一樣——即便你的編程語言允許你這么做。這一建議等價(jià)于高呼:“模塊化!模塊化!模塊化!”
  使用訪問器子程序創(chuàng)建訪問器子程序是避免產(chǎn)生與全局?jǐn)?shù)據(jù)相關(guān)問題的主要方法。下一節(jié)會(huì)對(duì)此做更多的討論。
  ……

點(diǎn)此購買


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)