編輯推薦
代碼構建也兼具藝術性和思想性!
《代碼大全(第二版)》經典重塑,2011版,仍然是一本完整的軟件構建手冊,涵蓋瞭軟件構建過程中的所有細節!是著名IT暢銷書作者Steve McConnell十一年前的經典著作的全新演繹,該作者是兩屆Software Development Magzine Jolt Award震撼大奬得主。兩屆震撼大奬得主,數十年軟件開發智慧,十二年前的經典,十二年後再鑄輝煌!
內容簡介
代碼大全(第2版)是著名Ⅱ暢銷書作者、《IEEESoftware》雜誌前主編、具有20年編程與項目管理經驗的SteveMcConneU十餘年前的經典著作的全新演繹:第2版做瞭全麵的更新,增加瞭很多與時俱進的內容,包括對新語言、新的開發過程與方法論的討論,等等。這是一本百科全書式的軟件構建手冊,涵蓋瞭軟件構建活動的方方麵麵,尤其強調提高軟件質量的種種實踐方法。
作者特彆注重源代碼的可讀性,詳細討論瞭類和函數命名、變量命名、數據類型和控製結構、代碼布局等編程的基本要素,也討論瞭防禦式編程、錶驅動法、協同構建、開發者測試、性能優化等有效開發實踐,這些都服務於軟件的技術使命:管理復雜度。為瞭培養程序員編寫高質量代碼的習慣,書中展示瞭大量高質量代碼示例(以及用作對比的低質量代碼),提高軟件質量是降低開發成本的重要途徑。除此之外,本書歸納總結瞭來自專傢的經驗、業界研究以及學術成果,列舉瞭大量軟件開發領域的真實案例與統計數據,提高本書的說服力。
本書中所論述的技術不僅填補瞭初級與高級編程實踐之間的空白,而且也為程序員們提供瞭一個有關軟件開發技術的信息來源。本書對經驗豐富的程序員、技術帶頭人、自學的程序員及沒有太多編程經驗的學生都是大有裨益的。可以說,隻要您具有一定的編程基礎,想成為一名優秀的程序員,閱讀本書都不會讓您失望。
作者簡介
Steve,Mc Connell,被公認為軟件開發社區中的首要作者和發言人之一。他是ConstruxSoftware公司的首席軟件工程師。他所編著的圖書包括曾被SoftwareDevelopment雜誌授予優異産品震撼大奬(JoltAwardforproductexcellence)的《代碼大全》(CodeComplete)和《快速軟件開發》(RapidDevelopment),以及《軟件項目生存指南》(SoftwareProtectSurvivalGuide)和《專業軟件開發》(ProfessionalSoftwareDevelopment)等等。
精彩書評
“《代碼大全》第1版在我看來堪稱軟件工程領域的經典之作——而第2版則更棒!”
——Ralph Johnson,伊利諾伊州立大學;《設計模式》(Design Pattems)作者之一
“無論您是新手還是經驗豐富的開發人員, 《代碼大全》(第2版)都能教會您思考編程的方法。”
——Jeffrey Richter,《Microsoft.NET框架實用編程》(Applied Microsoft.NET Framework Programming)作者
“這本書是講述軟件構建的指南——準備孤身前往荒島的程序員隻要帶上這本書就足夠瞭。”
——Diomidis Spinellis,《代碼閱讀方法與實踐》(Code Reading:The Open Source Perspective)作者
“Steve McConnell是一位既在一綫實踐,又能把其中奧妙講明白的少數人之一。”
——John Vlissides,IBM研究院;《設計模式》(Design Patterns)作者之一
”Steve McConnell比任何人都懂得如何構建軟件;我們十分慶幸他能把其所有的深邃見解和實踐經驗寫成這樣一本重要而新穎的圖書。”
——“Visual Basic之父”Alan Cooper,《軟件觀念革命》(About Face 2.0)作者
目錄
前言
鳴謝
核對錶目錄
錶目錄
圖目錄
第1部分 打好基礎
第1章 歡迎進入軟件構建的世界“
1.1 什麼是軟件構建
1.2 軟件構建為何如此重要
1.3 如何閱讀本書
第2章 用隱喻來更充分地理解軟件開發
2.1 隱喻的重要性
2.2 如何使用軟件隱喻
2.3 常見的軟件隱喻
第3章 三思而後行:前期準備
3.1 前期準備的重要性
3.2 辨明你所從事的軟件的類型
3.3 問題定義的先決條件
3.4 需求的先決條件
3.5 架構的先決條件
3.6 花費在前期準備上的時間長度
第4章 關鍵的“構建”決策
4.1 選擇編程語言
4.2 編程約定
4.3 你在技術浪潮中的位置
4.4 選擇主要的構建實踐方法
第5章 軟件構建中的設計
5.1 設計中的挑戰
5.2 關鍵的設計概念
5.3 設計構造塊:啓發式方法
5.4 設計實踐
5.5 對流行的設計方法的評論
第6章 可以工作的類
6.1 類的基礎:抽象數據類型(ADTs)
6.2 良好的類接口
6.3 有關設計和實現的問題
6.4 創建類的原因
6.5 與具體編程語言相關的問題
6.6 超越類:包
第7章 高質量的子程序
7.1 創建子程序的正當理由
7.2 在子程序層上設計
7.3 好的子程序名字
7.4 子程序可以寫多長
7.5 如何使用子程序參數
7.6 使用函數時要特彆考慮的問題
7.7 宏子程序和內聯子程序
第8章 防禦式編程
8.1 保護程序免遭非法輸入數據的破壞
8.2 斷言
8.3 錯誤處理技術
8.4 異常
8.5 隔離程序,使之包容由錯誤造成的損害
8.6 輔助調試的代碼
8.7 確定在産品代碼中該保留多少防禦式代碼
8.8 對防禦式編程采取防禦的姿態
第9章 僞代碼編程過程
9.1 創建類和子程序的步驟概述
9.2 僞代碼
9.3 通過僞代碼編程過程創建子程序
9.4 僞代碼編程過程的替代方案
第3部分 變量
第10章 使用變量的一般事項
10.1 數據認知
10.2 輕鬆掌握變量定義
10.3 變量初始化原則
10.4 作用域
10.5 持續性
10.6 綁定時間
10.7 數據類型和控製結構之問的關係
10.8 為變量指定單一用途
第11章 變量名的力量
11.1 選擇好變量名的注意事項
11.2 為特定類型的數據命名
11.3 命名規則的力量
11.4 非正式命名規則
11.5 標準前綴
11.6 創建具備可讀性的短名字
11.7 應該避免的名字
第12章 基本數據類型
12.1 數值概論
12.2 整數
12.3 浮點數
12.4 字符和字符串
12.5 布爾變量
12.6 枚舉類型
12.7 具名常量
12.8 數組
12.9 創建你自己的類型(類型彆名)
第13章 不常見的數據類型
13.1 結構體
……
第4部分 語句
第5部分 代碼改善
第6部分 係統考慮
第7部分 軟件工藝
參考文獻
索引
精彩書摘
數據純化論者有時爭論說,程序員應該絕不使用全局數據,但是按照“全局數據”這一術語的廣義解釋,大多數程序都使用瞭它。存在於數據庫中的數據是全局數據,存在於配置文件如Windows注冊錶中的數據也是。具名常量也是全局數據,隻不過不是全局變量罷瞭。
如果遵循使用的原則,那麼全局變量在一些場閤下也是有用的。
保存全局數值有時候你會有一些在概念上用於整個程序的數據。這可能是一個用於錶示程序狀態的變量——例如,交互式模式或者命令行模式、正常模式或者錯誤恢復模式等的模式標識。也可能是在整個程序裏麵要用到的信息——例如,程序中的每一個子程序都會用到的數據錶。
模擬具名常量盡管C++、Java、Visual Basic和多數現代語言都支持具名常量,但是Python、Perl、Awk以及UNIX shell腳本等語言卻不支持。當你的語言不支持具名常量的時候,你可以用全局變量代替它們。例如,你可以用取值分彆為1和0的全局變量TRUE和FALSE來代替字麵量1和0,或者用LINSES_PER_PAGE=66代錶每頁行數的66。一旦采用瞭這種方法,那麼日後再修改代碼就會更容易瞭,而且這樣的代碼會更方便閱讀。貫徹這種對全局數據的使用原則是在一種語言上編程(programming in a language)和深入一種語言去編程(programming into a language)之間差異的一個主要示例,第34.4節“深入一門語言去編程,不浮於錶麵”對此有深入探討。
模擬枚舉類型你還可以在Python等不直接支持枚舉類型的語言裏用全局變量來模擬枚舉類型。
簡化對極其常用的數據的使用有的時候你會大量地引用一個變量,以緻於它幾乎齣現在你所編寫的每一個子程序的參數列錶裏。與其將它包含在每一個參數列錶裏麵,不如把它設置成全局變量。不過,事實上很少會齣現代碼到處訪問某一個變量的情形。通常該變量是由為數不多的一組子程序來訪問的,你可以把這些子程序以及它們所用到的數據整閤進一個類裏麵。下麵會就這一問題展開討論。
消除流浪數據有的時候你把數據傳遞給一個子程序或者類,僅僅是因為想要把它傳遞給另一個子程序或者類。例如,你可能有一個在每個子程序裏都使用的錯誤處理對象。當調用鏈中間的子程序並不使用這一對象的時候,這一對象就被稱為“流浪數據(tramp data)”。使用全局變量可以消除流浪數據。
Use Global Data Only as a Last Resort
隻有萬不得已時纔使用全局數據
在你選擇使用全局數據之前,請考慮下麵這些替換方案。
首先把每一個變量設置為局部的,僅當需要時纔把變量設置為全局的 開始的時候先把所有的變量設置為單一子程序內部的局部變量。如果你發現還需要在其他位置用到它們,那麼在一舉把它們轉變成全局變量之前,先把它們轉變為類裏的private或者protected變量。如果你最終發現必須要把它們轉變成全局變量,那麼就轉變它們。不過請先確定除此之外彆無選擇。如果你一開始就把變量設置為全局的,那麼你將永遠不可能把它轉變成局部的;反之,如果你開始時把變量設置為局部的,那麼你可能永遠也不需要把它轉變成全局的。
區分全局變量和類變量有些變量由於要被整個程序訪問,因此是真正的全局變量。其他隻在一組特定的子程序裏被頻繁使用的實際是類變量。在頻繁使用某個類變量的子程序組裏,你可以采用任何希望的方式來訪問它。如果類外部的子程序需要使用該變量,那麼就用訪問器子程序來提供對該變量的訪問。不要直接訪問類變量——好像它們是全局變量一樣——即便你的編程語言允許你這麼做。這一建議等價於高呼:“模塊化!模塊化!模塊化!”
使用訪問器子程序創建訪問器子程序是避免産生與全局數據相關問題的主要方法。下一節會對此做更多的討論。
……
前言/序言
代碼大全(第2版) 下載 mobi epub pdf txt 電子書 格式