代碼大全 (第二版) 『Code Complete, 2/e』 代码大全(第2版)

史蒂夫•邁克康奈爾 (Steve McConnell)

  • 出版商: 電子工業出版社
  • 出版日期: 2011-10-01
  • 定價: CNY $128.00
  • 售價: $768
  • 貴賓價: 9.5$730
  • 語言: 簡體中文
  • 頁數: 944
  • 裝訂: 平裝
  • ISBN: 7121022982
  • ISBN-13: 9787121022982

立即出貨

買這商品的人也買了...

產品描述

   

編輯推薦

 

《代碼大全(2)》中所論述的技術不僅填補了初級與高級編程實踐之間的空白,而且也為程序員們提供了一個有關軟件開發技術的信息來源。《代碼大全(2)》對經驗豐富的程序員、技術帶頭人、自學的程序員及沒有太多編程經驗的學生都是大有裨益的。可以說,只要您具有一定的編程基礎,想成為一名優秀的程序員,閱讀《代碼大全(2)》都不會讓您失望。

名人推薦

《代碼大全》第1版在我看來堪稱軟件工程領域的經典之作——而第2版則更棒!
——Ralph Johnson,伊利諾伊州立大學;《設計模式》(Design Pattems)作者之一
無論您是新手還是經驗豐富的開發人員, 《代碼大全》(第2版)都能教會您思考編程的最佳方法。
——Jeffrey Richter,《Microsoft.NET框架實用編程》(Applied Microsoft.NET Framework Programming)作者
這本書是講述軟件構建的權威指南——準備孤身前往荒島的程序員只要帶上這本書就足夠了。
——Diomidis Spinellis,《代碼閱讀方法與實踐》(Code ReadingThe Open Source Perspective)作者
“Steve McConnell是一位既在一線實踐,又能把其中奧妙講明白的少數人之一。
——John VlissidesIBM研究院;《設計模式》( Design Patterns)作者之一
”Steve McConnell比任何人都懂得如何構建軟件;我們十分慶幸他能把其所有的深邃見解和實踐經驗寫成這樣一本重要而新穎的圖書。
——“Visual Basic之父”Alan Cooper,《軟件觀念革命》(About Face 2.0)作者

作者簡介

作者:(美國)史蒂夫邁克康奈爾(Steve McConnell 譯者:金戈

目錄

前言
鳴謝
核對錶目錄
表目錄
圖目錄
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選擇主要的構建實踐方法

2部分創建高質量的代碼
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創建類和子程序的步驟概述
……
3部分變量
4部分語句
5部分代碼改善
6部分系統考慮
7部分軟件工藝
參考文獻
索引

文摘

數據純化論者有時爭論說,程序員應該絕不使用全局數據,但是按照全局數據這一術語的廣義解釋,大多數程序都使用了它。存在於數據庫中的數據是全局數據,存在於配置文件如Windows註冊表中的數據也是。具名常量也是全局數據,只不過不是全局變量罷了。
如果遵循使用的原則,那麼全局變量在一些場合下也是有用的。
保存全局數值有時候你會有一些在概念上用於整個程序的數據。這可能是一個用於表示程序狀態的變量——例如,交互式模式或者命令行模式、正常模式或者錯誤恢復模式等的模式標識。也可能是在整個程序裡面要用到的信息——例如,程序中的每一個子程序都會用到的數據表。
模擬具名常量儘管C++JavaVisual Basic和多數現代語言都支持具名常量,但是PythonPerlAwk以及UNIX shell腳本等語言卻不支持。當你的語言不支持具名常量的時候,你可以用全局變量代替它們。例如,你可以用取值分別為10的全局變量TRUEFALSE來代替字面量10,或者用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變量。如果你最終發現必須要把它們轉變成全局變量,那麼就轉變它們。不過請先確定除此之外別無選擇。如果你一開始就把變量設置為全局的,那麼你將永遠不可能把它轉變成局部的;反之,如果你開始時把變量設置為局部的,那麼你可能永遠也不需要把它轉變成全局的。
區分全局變量和類變量有些變量由於要被整個程序訪問,因此是真正的全局變量。其他只在一組特定的子程序裡被頻繁使用的實際是類變量。在頻繁使用某個類變量的子程序組裡,你可以採用任何希望的方式來訪問它。如果類外部的子程序需要使用該變量,那麼就用訪問器子程序來提供對該變量的訪問。不要直接訪問類變量——好像它們是全局變量一樣——即便你的編程語言允許你這麼做。這一建議等價於高呼:模塊化!模塊化!模塊化!
使用訪問器子程序創建訪問器子程序是避免產生與全局數據相關問題的主要方法。下一節會對此做更多的討論。