注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)其他編程語言/工具代碼大全

代碼大全

代碼大全

定 價(jià):¥196.00

作 者: (美)邁克康奈爾(McConnell, S.)著;金戈譯
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 軟件開發(fā) 手冊

ISBN: 9787121022982 出版時(shí)間: 2006-03-01 包裝: 膠版紙
開本: 小16開 頁數(shù): 960 字?jǐn)?shù):  

內(nèi)容簡介

  《代碼大全(第2版)》是著名Ⅱ暢銷書作者、《IEEESoftware》雜志前主編、具有20年編程與項(xiàng)目管理經(jīng)驗(yàn)的SteveMcConneU十余年前的經(jīng)典著作的全新演繹:第2版做了全面的更新,增加了很多與時(shí)俱進(jìn)的內(nèi)容,包括對新語言、新的開發(fā)過程與方法論的討論,等等。這是一本百科全書式的軟件構(gòu)建手冊,涵蓋了軟件構(gòu)建活動(dòng)的方方面面,尤其強(qiáng)調(diào)提高軟件質(zhì)量的種種實(shí)踐方法。作者特別注重源代碼的可讀性,詳細(xì)討論了類和函數(shù)命名、變量命名、數(shù)據(jù)類型和控制結(jié)構(gòu)、代碼布局等編程的最基本要素,也討論了防御式編程、表驅(qū)動(dòng)法、協(xié)同構(gòu)建、開發(fā)者測試、性能優(yōu)化等有效開發(fā)實(shí)踐,這些都服務(wù)于軟件的首要技術(shù)使命:管理復(fù)雜度。為了培養(yǎng)程序員編寫高質(zhì)量代碼的習(xí)慣,書中展示了大量高質(zhì)量代碼示例(以及用作對比的低質(zhì)量代碼),提高軟件質(zhì)量是降低開發(fā)成本的重要途徑。除此之外,《代碼大全(第2版)》歸納總結(jié)了來自專家的經(jīng)驗(yàn)、業(yè)界研究以及學(xué)術(shù)成果,列舉了大量軟件開發(fā)領(lǐng)域的真實(shí)案例與統(tǒng)計(jì)數(shù)據(jù),提高《代碼大全(第2版)》的說服力?!洞a大全(第2版)》中所論述的技術(shù)不僅填補(bǔ)了初級與高級編程實(shí)踐之間的空白,而且也為程序員們提供了一個(gè)有關(guān)軟件開發(fā)技術(shù)的信息來源?!洞a大全(第2版)》對經(jīng)驗(yàn)豐富的程序員、技術(shù)帶頭人、自學(xué)的程序員及沒有太多編程經(jīng)驗(yàn)的學(xué)生都是大有裨益的。可以說,只要您具有一定的編程基礎(chǔ),想成為一名優(yōu)秀的程序員,閱讀《代碼大全(第2版)》都不會讓您失望。

作者簡介

  SteveMcConnellSteveMcConnell是Construx公司首席軟件工程師,在公司里監(jiān)督軟件工程實(shí)施。他是軟件工程知識體(SWEBOK)項(xiàng)目構(gòu)建知識領(lǐng)域的領(lǐng)導(dǎo)。Steve曾為微軟公司、波音公司和西雅圖地區(qū)的公司工作過。SteveMcConnell是以下著作的作者:1996年的《快速軟件開發(fā)(RapidDevelopment)》、1998年的《軟件項(xiàng)目長存之道(SoftwareProjectSurvivalGuide)》和2004年的《專業(yè)軟件開發(fā)(ProfessionalSoftwareDevelopment)》。他的書由于杰出,曾兩度獲得當(dāng)年的《軟件開發(fā)(SoftwareDevelopment)》雜志的優(yōu)秀震撼大獎(jiǎng)(JoltExcellenceaward)。Steve還曾是SPC評估專業(yè)版的開發(fā)領(lǐng)袖,軟件開發(fā)生產(chǎn)力大獎(jiǎng)(SoftwareDevelopmentProductivityaward)的獲得者。1998年《軟件開發(fā)》讀者推選SteveMcConnell為軟件行業(yè)最有影響力的三個(gè)人之一,與BillGates、LinusTorvalds齊名。Steve從Whitman大學(xué)獲學(xué)士學(xué)位,并從西雅圖大學(xué)獲軟件工程碩士學(xué)位。>>更多作品譯者:金戈金戈,網(wǎng)名JGTM,2004-2006連續(xù)三年獲得微軟最有價(jià)值專家(MicrosoftMVP)獎(jiǎng),在Windows平臺上有近20年的程序設(shè)計(jì)開發(fā)經(jīng)驗(yàn),8年多軟件設(shè)計(jì)、開發(fā)與項(xiàng)目管理方面的工作經(jīng)驗(yàn)。在軟件開發(fā)方面,早期主要使用VisualC++、BorlandDelphi進(jìn)行開發(fā),于2003年所著的共享軟件WinWAXExpress曾在國外獲得多個(gè)獎(jiǎng)項(xiàng)。目前主要使用VisualC#在.NET平臺進(jìn)行應(yīng)用技術(shù)研究與開發(fā)。他對Windows平臺有著深入的研究和豐富的實(shí)踐經(jīng)驗(yàn),尤其擅長COM/OLE組件技術(shù)、WindowsShell、InternetExplorer等等,并在面向?qū)ο蠓治雠c設(shè)計(jì)技術(shù)、設(shè)計(jì)模式、分布式應(yīng)用系統(tǒng)架構(gòu)設(shè)計(jì)、面向服務(wù)的架構(gòu)(SOA)等方面深有所得,近年來也成為了敏捷軟件開發(fā)的積極實(shí)踐者。8年多的工作中,負(fù)責(zé)過大小項(xiàng)目20余個(gè),涉及包括全文檢索、信息門戶、電子商務(wù)、工作流、農(nóng)業(yè)信息化、多媒體、3S等多個(gè)領(lǐng)域,積累了大量寶貴的經(jīng)驗(yàn)。經(jīng)過3年多時(shí)間的不懈摸索,他從2004年開始了創(chuàng)業(yè)生涯,歷經(jīng)風(fēng)雨磨難,至今仍在奮勇前行。所創(chuàng)項(xiàng)目,一個(gè)是面向電視觀眾和電視媒體行業(yè)的無線增值應(yīng)用與信息化解決方案,另一個(gè)是互聯(lián)網(wǎng)地理信息與娛樂互動(dòng)服務(wù)(4月底即將上線運(yùn)行)。2005年開始,他同時(shí)在國家動(dòng)物疫病預(yù)防與控制中心(CADC)負(fù)責(zé)主持農(nóng)業(yè)部國家級項(xiàng)目"全國動(dòng)物標(biāo)識管理與追蹤溯源系統(tǒng)"的技術(shù)研發(fā)和架構(gòu)設(shè)計(jì),并創(chuàng)立了"國家重大動(dòng)物疫病應(yīng)急防控指揮平臺"的實(shí)驗(yàn)原型,受到各級領(lǐng)導(dǎo)的好評,該項(xiàng)目擬列為國家"十一五"信息化示范工程。未來,他希望成立自己的軟件公司,把多年來的創(chuàng)意變成產(chǎn)品,改善人們每天的生活。再花上10年時(shí)間,利用自己的技術(shù)為中國的教育信息化做一些貢獻(xiàn)。如果有可能的話,還希望能創(chuàng)辦一個(gè)專門培養(yǎng)軟件設(shè)計(jì)、開發(fā)與項(xiàng)目管理人才的學(xué)校,把自己的技術(shù)和經(jīng)驗(yàn)傳遞給更多人。順利的話,在自己軟件生涯20年的時(shí)候?qū)懸槐緯浭鲆幌逻@20年來的成長歷程,應(yīng)該也是很有意思的事情。代碼大全(第二版)(程序員心目中的編程圣經(jīng)!世界上最優(yōu)秀的程序員都看過本書,你呢?)>>更多作品

圖書目錄

第1章  歡迎進(jìn)入軟件構(gòu)建的世界    3
1.1  什么是軟件構(gòu)建?    3
1.2  軟件構(gòu)建為何如此重要?    6
1.3  如何閱讀本書    8
關(guān)鍵點(diǎn)    8
第2章  用隱喻來更充分地理解軟件開發(fā)    9
2.1  隱喻的重要性    9
2.2  如何使用軟件隱喻    11
2.3  常見的軟件隱喻    13
軟件中的書法:寫作代碼    13
軟件的耕作法:培植系統(tǒng)    14
軟件的牡蠣養(yǎng)殖觀點(diǎn):系統(tǒng)生長    15
軟件構(gòu)建:建造軟件    16
應(yīng)用軟件技術(shù):智慧工具箱    20
組合各個(gè)隱喻    20
更多資源    20
關(guān)鍵點(diǎn)    21
第3章  三思而后行:前期準(zhǔn)備    23
3.1  前期準(zhǔn)備的重要性    24
前期準(zhǔn)備適用于現(xiàn)代軟件項(xiàng)目嗎?    25
準(zhǔn)備不周全的誘因    25
關(guān)于開始構(gòu)建之前要做前期準(zhǔn)備的絕對有力且簡明的論據(jù)    27
3.2  辨明你所從事的軟件的類型    31
迭代開發(fā)法對前期準(zhǔn)備的影響    33
在序列式開發(fā)法和迭代式開發(fā)法之間做出選擇    35
3.3  問題定義的先決條件    36
3.4  需求的先決條件    38
為什么要有正式的需求?    38
穩(wěn)定需求的神話    39
在構(gòu)建期間處理需求變更    40
3.5  架構(gòu)的先決條件    43
架構(gòu)的典型組成部分    45
3.6  花費(fèi)在前期準(zhǔn)備上的時(shí)間長度    55
更多資源    56
關(guān)鍵點(diǎn)    59
第4章  關(guān)鍵的“構(gòu)建”決策    61
4.1  選擇編程語言    61
語言描述    63
4.2  編程約定    66
4.3  你在技術(shù)浪潮中的位置    66
“深入一種語言去編程”的例子    68
4.4  選擇主要的構(gòu)建實(shí)踐方法    69
關(guān)鍵點(diǎn)    70
第5章  軟件構(gòu)建中的設(shè)計(jì)    73
5.1  設(shè)計(jì)中的挑戰(zhàn)    74
設(shè)計(jì)是一個(gè)險(xiǎn)惡的問題    74
設(shè)計(jì)是個(gè)了無章法的過程(即使它能得出清爽的成果)    75
設(shè)計(jì)就是確定取舍和調(diào)整順序的過程    76
設(shè)計(jì)受到諸多限制    76
設(shè)計(jì)是不確定的    76
設(shè)計(jì)是一個(gè)啟發(fā)式過程    76
設(shè)計(jì)是自然而然形成的    76
5.2  關(guān)鍵的設(shè)計(jì)概念    77
軟件的首要技術(shù)任務(wù):管理復(fù)雜度    77
理想的設(shè)計(jì)特征    80
設(shè)計(jì)的層次    82
5.3  設(shè)計(jì)構(gòu)造塊:啟發(fā)式方法    87
尋找現(xiàn)實(shí)世界中的對象    87
形成一致的抽象    89
封裝實(shí)現(xiàn)細(xì)節(jié)    90
當(dāng)繼承能簡化設(shè)計(jì)時(shí)就繼承    91
隱藏秘密(信息隱藏)    92
找出容易改變的區(qū)域    97
保持松散耦合    100
查閱常用的設(shè)計(jì)模式    103
其他的啟發(fā)式方法    105
關(guān)于設(shè)計(jì)啟發(fā)的總結(jié)*****    108
使用啟發(fā)式方法的原則    109
5.4  設(shè)計(jì)實(shí)踐    110
迭代    110
分而治之    111
自上而下和自下而上的設(shè)計(jì)方法    111
建立試驗(yàn)性原型    114
合作設(shè)計(jì)    115
要做多少設(shè)計(jì)才夠?    115
記錄你的設(shè)計(jì)成果    117
5.5  對流行的設(shè)計(jì)方法的評論    118
更多資源    119
軟件設(shè)計(jì),一般性問題    119
軟件設(shè)計(jì)理論    120
設(shè)計(jì)模式    120
廣義的設(shè)計(jì)    121
標(biāo)準(zhǔn)    122
關(guān)鍵點(diǎn)    122
第6章  可以工作的類    125
6.1  類的基礎(chǔ):抽象數(shù)據(jù)類型    126
需要用到ADT的例子    126
使用ADT的益處    127
更多的ADT示例    129
在非面向?qū)ο蟓h(huán)境中用ADT處理多份數(shù)據(jù)實(shí)例    131
ADT和類    133
6.2  良好的類接口    133
好的抽象    133
良好的封裝    139
6.3  有關(guān)設(shè)計(jì)和實(shí)現(xiàn)的問題    143
包含(“有一個(gè)……”的關(guān)系)    143
繼承(“是一個(gè)……”關(guān)系)    144
成員函數(shù)和數(shù)據(jù)成員    150
構(gòu)造函數(shù)    151
6.4  創(chuàng)建類的原因    152
應(yīng)該避免的類    155
總結(jié):創(chuàng)建類的理由    155
與具體編程語言相關(guān)的問題    156
6.6  超越類:包    156
更多資源    159
關(guān)鍵點(diǎn)    160
第7章  高質(zhì)量的子程序    161
7.1  創(chuàng)建子程序的正當(dāng)理由    164
似乎過于簡單而沒必要寫成子程序的操作    166
總結(jié):創(chuàng)建子程序的理由    167
7.2  在子程序?qū)由显O(shè)計(jì)    168
7.3  好的子程序名字    171
7.4  子程序可以寫多長    173
7.5  如何使用子程序參數(shù)    174
7.6  使用函數(shù)時(shí)要特別考慮的問題    181
什么時(shí)候使用函數(shù),什么時(shí)候使用過程    181
設(shè)置函數(shù)的返回值    182
7.7  宏子程序和內(nèi)聯(lián)子程序    182
宏子程序在使用上的限制    184
內(nèi)聯(lián)子程序    184
關(guān)鍵點(diǎn)    186
第8章  防范式編程    187
8.1  保護(hù)程序免遭無效輸入數(shù)據(jù)的破壞    188
8.2  斷言    189
建立自己的斷言機(jī)制    191
使用斷言的指導(dǎo)建議    191
8.3  錯(cuò)誤處理技術(shù)    194
健壯性與正確性    197
高層次設(shè)計(jì)對錯(cuò)誤處理方式的影響    197
8.4  異常    198
8.5  隔離程序以免遭由錯(cuò)誤造成的損害    203
隔離區(qū)與斷言的關(guān)系    205
8.6  輔助調(diào)試代碼    205
不要自動(dòng)地把產(chǎn)品版本的限制強(qiáng)加于開發(fā)版本之上    205
盡早引入輔助調(diào)試的手段    206
采用冒進(jìn)式編程    206
計(jì)劃移除調(diào)試輔助代碼    206
8.7  確定在產(chǎn)品代碼中該保留多少防范式代碼    209
8.8  防范式編程時(shí)保持防范    210
其他資源    212
關(guān)鍵點(diǎn)    213
第9章  偽代碼編程過程    215
9.1  創(chuàng)建類和子程序的步驟概述    216
創(chuàng)建一個(gè)類的步驟    216
創(chuàng)建子程序的步驟    217
9.2  偽代碼    218
9.3  通過偽代碼編程過程創(chuàng)建子程序    220
設(shè)計(jì)子程序    225
編寫子程序    225
檢查代碼    230
收尾工作    232
根據(jù)需要重復(fù)上述步驟    232
9.4  偽代碼編程過程之外的其他方案    232
關(guān)鍵點(diǎn)    234
第10章  使用變量的一般事項(xiàng)    237
10.1  數(shù)據(jù)認(rèn)知    238
數(shù)據(jù)認(rèn)知測試    238
有關(guān)數(shù)據(jù)類型的其他資源    239
10.2  輕松掌握變量定義    239
隱式聲明    239
10.3  變量初始化原則    240
10.4  作用域    244
使變量引用局部化    245
盡可能縮短變量的“存活”時(shí)間    246
減小作用域的一般原則    249
有關(guān)縮小變量作用域的說明    250
10.5  持續(xù)性    251
10.6  綁定時(shí)間    252
10.7  數(shù)據(jù)類型和控制結(jié)構(gòu)之間的關(guān)系    254
10.8  為變量指定單一用途    255
關(guān)鍵點(diǎn)    258
第11章  變量名的力量    259
11.1  選擇好變量名的注意事項(xiàng)    259
最重要的命名注意事項(xiàng)    260
以問題為導(dǎo)向    261
最適當(dāng)?shù)拿珠L度    262
變量名字的效果范圍    262
變量名字中的計(jì)算值限定詞    263
變量名字中的常用反義詞    264
11.2  為特定類型的數(shù)據(jù)命名    264
為循環(huán)索引命名    265
為狀態(tài)變量命名    266
為臨時(shí)變量命名    267
為布爾變量命名    268
為枚舉類型命名    269
為常量命名    270
11.3  命名規(guī)則的力量    270
為什么要有規(guī)則?    270
何時(shí)采用命名規(guī)則    271
正式程度    271
11.4  非正式命名規(guī)則    272
語言無關(guān)規(guī)則的指導(dǎo)原則    272
語言相關(guān)規(guī)則的指導(dǎo)原則    275
混合語言編程的注意事項(xiàng)    276
命名規(guī)則示例    276
11.5  標(biāo)準(zhǔn)前綴    279
用戶自定義類型縮寫    279
語義前綴    280
標(biāo)準(zhǔn)前綴的優(yōu)點(diǎn)    281
11.6  創(chuàng)建具備可讀性的短名稱    282
一般的縮寫指導(dǎo)原則    282
語音縮寫    282
有關(guān)縮寫的評論    282
11.7  應(yīng)該避免的名稱    285
關(guān)鍵點(diǎn)    289
第12章  基本數(shù)據(jù)類型    291
12.1  使用數(shù)的普遍規(guī)則    292
12.2  整數(shù)    293
12.3  浮點(diǎn)數(shù)    295
12.4  字符和字符串    297
C中的字符串    299
12.5  布爾變量    301
12.6  枚舉類型    303
如果你的語言里沒有枚舉類型    307
12.7  命名常量    307
12.8  數(shù)組    310
12.9  創(chuàng)建你自己的類型(類型別名)    311
為什么創(chuàng)建自己的類型的示例是用Pascal和Ada寫的?    314
創(chuàng)建自定義數(shù)據(jù)類型的指導(dǎo)原則    315
關(guān)鍵點(diǎn)    318
第13章  不常見的數(shù)據(jù)類型    319
13.1  結(jié)構(gòu)    319
13.2  指針    323
用來理解指針的例子    323
使用指針的一般技巧    325
C++指針    332
C指針    334
13.3  全局?jǐn)?shù)據(jù)    335
與全局?jǐn)?shù)據(jù)有關(guān)的常見問題    335
使用全局?jǐn)?shù)據(jù)的理由    338
只有萬不得已時(shí)才使用全局?jǐn)?shù)據(jù)    339
用訪問子程序來取代全局?jǐn)?shù)據(jù)    339
如何降低使用全局?jǐn)?shù)據(jù)的風(fēng)險(xiǎn)    342
其他資源    343
關(guān)鍵點(diǎn)    344
第14章  組織直線型代碼    347
14.1  必須有明確順序的語句    347
14.2  順序無關(guān)的語句    351
使代碼易于自上而下的閱讀    351
把相關(guān)的語句組織在一起    352
關(guān)鍵點(diǎn)    353
第15章  使用條件語句    355
15.1  if語句    355
簡單if-then語句    355
if-then-else語句串    358
15.2  case語句    361
為case選擇最有效的排序    361
使用case語句的提示    361
關(guān)鍵點(diǎn)    366
第16章  控制循環(huán)    367
16.1  選擇循環(huán)的種類    367
什么時(shí)候使用while循環(huán)    368
什么時(shí)候用帶退出的循環(huán)    369
何時(shí)使用for循環(huán)    372
何時(shí)使用foreach循環(huán)    372
16.2  循環(huán)控制    373
進(jìn)入循環(huán)    373
處理好循環(huán)體    375
退出循環(huán)    377
檢查端點(diǎn)    381
使用循環(huán)變量    382
循環(huán)應(yīng)該有多長?    385
16.3  輕松創(chuàng)建循環(huán)——由內(nèi)而外    385
16.4  循環(huán)和數(shù)組的關(guān)系    387
關(guān)鍵點(diǎn)    389
第17章  不常見的控制結(jié)構(gòu)    391
17.1  子程序中的多個(gè)返回    392
17.2  遞歸    393
遞歸的例子    394
使用遞歸的技巧    396
17.3  goto    398
反對goto的論點(diǎn)    398
支持goto的觀點(diǎn)    399
關(guān)于goto的虛假辯論    400
錯(cuò)誤處理和goto    401
goto和在else子句中的共享代碼    406
goto使用原則總結(jié)    407
17.4  對不常見控制結(jié)構(gòu)的看法    408
其他資源    408
關(guān)鍵點(diǎn)    410
第18章  表驅(qū)動(dòng)方法    411
18.1  表驅(qū)動(dòng)方法使用總則    411
使用表驅(qū)動(dòng)方法的兩個(gè)問題    412
18.2  直接訪問表    413
示例:一個(gè)月中的天數(shù)(Days-in-Month)    413
示例:保險(xiǎn)費(fèi)率    415
例子:靈活的消息格式(Flexible-Message-Format)    416
構(gòu)造查詢鍵值    423
18.3  索引表訪問(Indexed Access Tables)    425
18.4  階梯訪問表    426
18.5  表查詢的其他示例    429
關(guān)鍵點(diǎn)    430
第19章  一般控制問題    431
19.1  布爾表達(dá)式    432
用true和false做布爾判斷    432
簡化復(fù)雜的表達(dá)式    434
編寫肯定形式的布爾表達(dá)式    436
用括號使布爾表達(dá)式更清晰    438
理解布爾表達(dá)式是如何求值的    439
Writing Numeric Expressions in Number-Line Order    441
按照數(shù)軸的順序編寫數(shù)值表達(dá)式    441
Guidelines for Comparisons to 0    442
與0比較的指導(dǎo)原則    442
Common Problems with Boolean Expressions    443
布爾表達(dá)式的常見問題    443
19.2  Compound Statements (Blocks)    444
19.2  復(fù)合語句(塊)    444
19.3  Null Statements    445
19.3  空語句    445
19.4  Taming Dangerously Deep Nesting    446
19.4  馴服危險(xiǎn)的深層嵌套    446
Summary of Techniques for Reducing Deep Nesting    454
對減少嵌套層次的技術(shù)的總結(jié)    454
19.5  A Programming Foundation: Structured Programming    455
19.5  編程基礎(chǔ):結(jié)構(gòu)化編程    455
The Three Components of Structured Programming    455
結(jié)構(gòu)化編程的三個(gè)組成部分    455
19.6  Control Structures and Complexity    457
19.6  控制結(jié)構(gòu)與復(fù)雜度    457
How Important Is Complexity?    458
復(fù)雜度的重要性    458
General Guidelines for Reducing Complexity    458
降低復(fù)雜度的一般原則    458
Other Kinds of Complexity    460
其它類型的復(fù)雜度    460
CHECKLIST: Control-Structure Issues    460
檢查表:控制結(jié)構(gòu)相關(guān)事宜    460
Key Points    461
關(guān)鍵點(diǎn)    461

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號