代碼大全(第2版)

代碼大全(第2版) pdf epub mobi txt 電子書 下載 2025

[美] Steve,[美] McConnell 著,金戈,湯淩,陳碩,張菲 譯
圖書標籤:
  • 編程
  • 軟件工程
  • 代碼質量
  • 軟件開發
  • 代碼規範
  • 最佳實踐
  • 軟件設計
  • 可維護性
  • 調試
  • 算法
想要找書就要到 靜思書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 電子工業齣版社
ISBN:9787121022982
版次:2
商品編碼:10875285
品牌:Broadview
包裝:平裝
開本:16開
齣版時間:2011-09-01
用紙:膠版紙
頁數:944

具體描述

編輯推薦

  

代碼構建也兼具藝術性和思想性!

《代碼大全(第二版)》經典重塑,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變量。如果你最終發現必須要把它們轉變成全局變量,那麼就轉變它們。不過請先確定除此之外彆無選擇。如果你一開始就把變量設置為全局的,那麼你將永遠不可能把它轉變成局部的;反之,如果你開始時把變量設置為局部的,那麼你可能永遠也不需要把它轉變成全局的。
  區分全局變量和類變量有些變量由於要被整個程序訪問,因此是真正的全局變量。其他隻在一組特定的子程序裏被頻繁使用的實際是類變量。在頻繁使用某個類變量的子程序組裏,你可以采用任何希望的方式來訪問它。如果類外部的子程序需要使用該變量,那麼就用訪問器子程序來提供對該變量的訪問。不要直接訪問類變量——好像它們是全局變量一樣——即便你的編程語言允許你這麼做。這一建議等價於高呼:“模塊化!模塊化!模塊化!”
  使用訪問器子程序創建訪問器子程序是避免産生與全局數據相關問題的主要方法。下一節會對此做更多的討論。
  ……

前言/序言


穿越曆史的迷霧:一部關於古代文明與失落知識的探尋之旅 《星河遺跡:失落文明的密碼》並非一本關於編程或軟件開發的著作,它帶領讀者潛入人類曆史深邃的迷霧之中,揭示那些隨著時光流逝而湮滅的輝煌文明,以及它們留下的令人費解的印記。這本書是一次跨越數韆年的史詩級探險,作者憑藉嚴謹的學術態度和引人入勝的敘事風格,深入挖掘那些被塵封的傳說、被遺忘的文字,以及散落在世界各地的古老遺跡,試圖解讀失落文明在科學、哲學、藝術和宇宙觀上的獨特貢獻,以及它們為何最終走嚮衰落的深層原因。 本書的開篇,我們將目光投嚮尼羅河畔,探尋古埃及那些令人驚嘆的建築奇跡。作者並非僅僅羅列金字塔的高度或方尖碑的重量,而是著重於分析古埃及人在沒有現代工具的情況下,如何運用其卓越的工程學知識和對天文學的深刻理解,建造齣宏偉壯麗的陵墓和神廟。書中會詳細闡述他們復雜的測量技術、石塊切割與搬運的巧妙方法,以及其中蘊含的幾何學原理。更令人著迷的是,作者將引導讀者思考,古埃及人對生死輪迴的哲學觀念,以及他們如何將這種觀念融入到建築設計和宗教儀式之中,構建齣一個連接現世與彼岸的宏大精神體係。從象形文字的解讀,到紙莎草文獻的破譯,本書將呈現古埃及人在天文學、數學、醫學、甚至早期的化學領域所取得的令人矚目成就,為我們勾勒齣一個遠超我們想象的古老文明的智慧輪廓。 隨後,我們的旅程將轉移到美索不達米亞平原,那裏曾孕育齣蘇美爾、巴比倫等古老帝國。本書將深入探討楔形文字的起源與演變,揭示其作為最早的文字係統之一,如何記錄瞭古代社會的法律、經濟、宗教和文學。讀者將有機會瞭解《漢謨拉比法典》的精妙之處,以及它在法律史上的裏程碑意義。此外,本書還會重點介紹美索不達米亞文明在天文學方麵的卓越貢獻,例如他們對行星運行的精確觀測,以及由此發展齣的復雜曆法係統。作者將試圖解釋,為什麼生活在兩河流域的古人,會對星空如此著迷,以及他們從中解讀齣瞭怎樣的宇宙秩序。書中還會提及一些鮮為人知的考古發現,它們可能暗示瞭美索不達米亞文明在數學、工程甚至早期的冶金技術方麵,也達到瞭相當的高度,隻是許多知識已隨著時間的洪流而消逝。 本書的篇章將繼續嚮東延伸,抵達神秘的印度次大陸。在這裏,我們將探尋印度河榖文明的輝煌,這座擁有發達城市規劃、先進排水係統和統一度量衡的古老文明,其文字至今仍是未解之謎。作者將基於已有的考古證據,推測這個高度組織化的社會是如何運作的,以及其獨特的文化特徵。接著,本書將深入探討古印度哲學與宗教的起源,從吠陀文獻到奧義書,我們將跟隨作者的腳步,理解印度教、佛教等深刻影響世界的哲學思想是如何萌芽和發展的。書中還將介紹古印度在數學領域的突破性進展,例如“零”的概念、十進製計數法以及代數學的早期萌芽,這些貢獻對世界文明的發展産生瞭深遠的影響。同時,古印度在醫學(如阿育吠陀)和天文學方麵的研究,也將被詳細剖析,揭示其豐富的知識體係。 本書的目光並未止步於此,它還將帶我們走進遙遠的古希臘。我們並非簡單迴顧柏拉圖、亞裏士多德的哲學思想,而是深入探討古希臘人在幾何學、物理學、天文學、醫學等各個領域所奠定的西方科學基礎。從歐幾裏得的《幾何原本》到阿基米德的杠杆原理,再到托勒密的宇宙模型,本書將以清晰的邏輯梳理這些偉大的發現是如何一步步推動人類對自然世界的認知。作者還會探討古希臘人對民主、理性、邏輯的追求,以及這些思想如何塑造瞭西方文明的基因。書中將嘗試解釋,古希臘的城邦製度、對外交流以及對知識的渴求,是如何共同孕育瞭這樣一個智慧的搖籃。 而當我們將目光投嚮美洲大陸,則會遇到瑪雅文明那令人驚嘆的 astronomica 精度和復雜的文字係統。本書將深入分析瑪雅文明在數學(包括使用“零”的概念)、天文學(能夠精確預測日食和月食)以及曆法(擁有極其復雜且精確的曆法係統)方麵的成就。讀者將有機會一窺瑪雅人所創造的令人難以置信的象形文字,以及考古學傢們在破譯這些文字方麵所付齣的艱辛努力。書中還將探討瑪雅文明獨特的城市規劃、建築風格以及其宗教信仰體係,並嘗試解讀他們文明最終衰落的可能原因。 《星河遺跡:失落文明的密碼》不僅僅是一部關於曆史的敘述,更是一次對人類智慧極限的探索。作者通過對不同文明的深入比較和分析,試圖找到隱藏在這些失落文明背後的普遍規律,以及它們共同麵臨的挑戰。本書將引導讀者思考:是什麼力量促使這些偉大的文明崛起?它們在科學、哲學和藝術上的獨特創造,又為我們留下瞭怎樣的啓示?而當它們走嚮衰落時,又給我們敲響瞭怎樣的警鍾? 本書還可能觸及一些更加神秘和引人入勝的領域,例如一些至今仍未完全解釋的古代遺址,如英國的巨石陣、南美的納斯卡綫條,以及那些流傳在世界各地的古老神話和傳說。作者將以批判性的眼光,審視這些現象,並嘗試從曆史、考古、人類學和天文學等多個角度,給齣閤乎邏輯的解釋,同時也不排除對其中一些未知領域保持適度的開放性。 最終,《星河遺跡:失落文明的密碼》旨在喚醒讀者對人類曆史的深邃敬畏,以及對未知世界的好奇心。它提醒我們,在現代文明的璀璨光芒之下,曾經存在過無數同樣令人贊嘆的智慧火花。通過對這些失落文明的探尋,我們不僅能更深刻地理解人類文明的演進軌跡,更能從中汲取寶貴的經驗與教訓,以更加清醒的頭腦,去麵對我們當下的挑戰,並為人類文明的未來,留下更加堅實的基石。本書將是一場令人難忘的心靈之旅,一次對人類集體記憶的深刻反思,以及一次對永恒智慧的追尋。

用戶評價

評分

作為一名在IT行業摸爬滾打多年的老兵,我閱書無數,但像《代碼大全(第2版)》這樣能夠引起我深度共鳴並提供如此多寶貴見解的書籍,真的不多見。它沒有那些浮誇的宣傳,沒有那些花哨的技巧,而是以一種樸實無華的風格,深入淺齣地闡述瞭軟件開發的核心理念和實踐經驗。書中關於“項目管理”和“團隊協作”的章節,讓我迴想起瞭很多過往項目中的得失,也給瞭我很多新的啓示。它讓我意識到,一個成功的軟件項目,絕不僅僅是代碼的堆砌,更需要良好的組織、有效的溝通和精心的規劃。特彆是關於“溝通”的重要性,書中給齣的建議,讓我深刻反思瞭自己在團隊閤作中可能存在的不足。此外,書中對於“性能優化”的分析,也讓我耳目一新。它不僅僅是給齣瞭一些性能調優的技巧,更重要的是,它教會瞭我如何從宏觀的角度去審視代碼的性能,以及如何在設計階段就考慮到性能問題。這本書讓我覺得,自己過去的經驗得到瞭印證,同時也學到瞭許多全新的、極具價值的知識。

評分

我必須說,當我收到《代碼大全(第2版)》的時候,我並沒有抱有多大的期望,畢竟市麵上關於編程的書籍實在太多瞭,很多都流於錶麵,缺乏深度。但這本書完全顛覆瞭我的認知。它不是一本簡單的“食譜”,告訴你如何一步步完成某個任務,而是更像一位經驗豐富的導師,用一種非常係統和深入的方式,帶你領略軟件開發的藝術。書中關於如何構建高質量代碼的論述,讓我受益匪淺。我以前總是覺得寫齣能跑的代碼就可以瞭,但這本書讓我明白,真正的“好代碼”應該具備可讀性、可維護性、高效性和可擴展性。它提齣的很多原則,比如“ KISS 原則”(Keep It Simple, Stupid)和“ DRY 原則”(Don't Repeat Yourself),雖然聽起來很耳熟,但書中的闡述和例子,讓我對這些原則有瞭更深刻的理解,也讓我認識到在實際開發中,如何更有效地去踐行它們。我特彆喜歡書中關於“代碼的演化”這一章節,它讓我意識到,代碼不是一成不變的,而是一個不斷生長和優化的過程,理解這一點對於長期維護和迭代項目至關重要。

評分

這本書簡直是軟件開發領域的聖經!我抱著學習的態度翻開它,結果卻完全被內容深深吸引。從最基礎的編碼規範到復雜的係統設計,作者都給齣瞭詳盡的解釋和生動的案例。我尤其喜歡其中關於“為什麼”的討論,很多時候我們隻是在模仿彆人的代碼,卻不理解背後的原理,而《代碼大全》恰恰彌補瞭這一點。它不僅僅是告訴我們“怎麼做”,更重要的是教會我們“為什麼要這麼做”。書中提供的各種編程範式和設計模式,讓我在麵對實際項目時,能夠更加從容地選擇最優方案。以前覺得自己的代碼寫得還不錯,讀完這本書纔知道,原來還有這麼多可以改進的地方。那些關於代碼可讀性、可維護性的建議,雖然看似簡單,但真正實踐起來,卻能極大地提升開發效率和團隊協作的順暢度。而且,書中對不同語言和平颱的比較分析,也讓我開闊瞭視野,不再局限於自己熟悉的領域。總而言之,這是一本值得反復閱讀、從中汲取養分的寶藏,每一個軟件工程師都應該擁有。

評分

坦白講,我是一個有些“實用主義”的開發者,更傾嚮於快速解決問題,而不是糾結於那些“高深莫測”的理論。所以,一開始我對《代碼大全(第2版)》這類“大部頭”的書籍是有些抗拒的。但我的同事強烈推薦,我纔硬著頭皮翻瞭翻。結果,我被它深深地吸引住瞭。它以一種非常接地氣的方式,講解瞭很多我以前從未深入思考過的問題。比如,關於“重構”的技巧,它不是簡單地告訴你“要重構”,而是詳細地列舉瞭各種重構的場景和方法,並配以清晰的代碼示例,讓我一看就懂,並且躍躍欲試。還有關於“調試”的藝術,書中給齣的方法和思路,讓我在麵對復雜Bug時,不再感到束手無策。它教會我如何更有條理、更有效地找齣問題的根源,而不是盲目地嘗試。這本書讓我意識到,解決問題不僅僅是技術問題,更是一種思維方式。它幫助我建立瞭一種更嚴謹、更係統的問題解決框架,這對我日常的工作起到瞭巨大的幫助。

評分

我最近一直在思考如何提升自己的編程能力,希望不僅僅停留在“碼農”的層麵,而是能成為一名真正意義上的“軟件工程師”。《代碼大全(第2版)》的齣現,無疑是給我指明瞭方嚮。它讓我看到瞭軟件開發中更廣闊的天地,以及我自身還有多少提升的空間。書中對於“設計模式”的講解,尤其令我印象深刻。我以前對設計模式的理解非常有限,常常是知道有這麼迴事,卻不知道如何運用,或者濫用。但這本書係統地梳理瞭各種常見的設計模式,並詳細解釋瞭它們的應用場景和優缺點,讓我對設計模式有瞭全新的認識。它不僅僅是提供瞭“工具”,更重要的是教會瞭我“如何思考”,如何用更優雅、更高效的方式來組織和設計代碼。我還發現,書中對於“測試”的強調,也讓我受益匪淺。以前我總覺得寫測試是一件費時費力的事情,但讀完這本書,我纔明白,高質量的測試是保證代碼質量、降低維護成本的關鍵。

評分

專業書籍,正版,實用,值得一看。

評分

很高啊 包裝很好 紙質也不錯總的來說非常滿意 湊字數

評分

經典就是經典,以前隻是都是網上看的一部分內容,這次特地買瞭一本,看看對自己有用的部分

評分

好東西好東西好東西好東西

評分

趁著搞活動時買的,經典書慢慢看

評分

支持京東,比超市便宜,送貨物流一流,服務態度好。支持京東,比超市便宜,送貨物流一流,服務態度好。

評分

1、如果是在庫房拿這本書的員工,我希望他可以更細心一點,不要讓顧客承受損失;

評分

書籍還不錯瞭,可以從裏麵學點東西瞭,說到瞭一切的數字重點,編碼。

評分

一本書而已,有無必要(我就問個字體和清晰度,他這句話打得是真沒必要)

相關圖書

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有