注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計程序設(shè)計綜合Code Craft編程匠藝:編寫卓越的代碼

Code Craft編程匠藝:編寫卓越的代碼

Code Craft編程匠藝:編寫卓越的代碼

定 價:¥79.00

作 者: (美國)(Goodliffe.P.)古德利弗 著;韓江、陳玉 譯
出版社: 電子工業(yè)出版社
叢編項:
標(biāo) 簽: 軟件工程

ISBN: 9787121069802 出版時間: 2008-01-01 包裝: 平裝
開本: 16 頁數(shù): 582 字數(shù):  

內(nèi)容簡介

  如果你可以編寫出合格的代碼,但是想更進一步、創(chuàng)作出組織良好而且易于理解的代碼,并希望成為一名真正的編程專家或提高現(xiàn)有的職業(yè)技能,那么《編程匠藝——編寫卓越的代碼》都會為你給出答案?!毒幊探乘嚒帉懽吭降拇a》的內(nèi)容遍及編程的各個要素,如代碼風(fēng)格、變量命名、錯誤處理和安全性等。此外,《編程匠藝——編寫卓越的代碼》還對一些更廣泛的編程問題進行了探討,如有效的團隊合作、開發(fā)過程和文檔編寫,等等?!毒幊探乘嚒帉懽吭降拇a》各章的末尾均提供一些思考問題,這些問題回顧了各章中的一些關(guān)鍵概念,可以促使你像專家一樣思考,從而使《編程匠藝——編寫卓越的代碼》成為那些渴望作為團隊的一分子,職業(yè)并高效地編程的新手們的一本絕佳的參考書。

作者簡介

  Pete Goodliffe是一位軟件開發(fā)專家,他在軟件“食物鏈”上從未駐足不前。他在各種各樣的項目中使用過許多種語言。他還在教授和指導(dǎo)程序員方面有著豐富的經(jīng)驗,并且常年為ACCU的C Vu雜志(www.accu.org)撰寫欄目“編程的職業(yè)化”。Pete癡迷于編寫出色的、沒有錯誤的代碼,這使得他有更多的時間與自己的孩子共

圖書目錄

第I篇代碼表面
第1章善于防守——健壯代碼的防御性編程技巧3
1.1向優(yōu)秀的代碼前進4
1.2設(shè)想:最壞的選擇4
1.3什么是防御性編程6
1.4又大又壞的世界8
1.5防御性編程技巧8
1.5.1使用好的編碼風(fēng)格和合理的設(shè)計9
1.5.2不要倉促地編寫代碼9
1.5.3不要相信任何人10
1.5.4編碼的目標(biāo)是清晰,而不是簡潔10
1.5.5不要讓任何人做他們不該做的修補工作11
1.5.6編譯時打開所有警告開關(guān)11
1.5.7使用靜態(tài)分析工具12
1.5.8使用安全的數(shù)據(jù)結(jié)構(gòu)12
1.5.9檢查所有的返回值13
1.5.10審慎地處理內(nèi)存(和其他寶貴的資源)13
1.5.11在聲明位置初始化所有變量14
1.5.12盡可能推遲一些聲明變量14
1.5.13使用標(biāo)準(zhǔn)語言工具14
1.5.14使用好的診斷信息日志工具15
1.5.15審慎地進行強制轉(zhuǎn)換15
1.5.16細則15
1.6約束16
1.6.1約束的內(nèi)容17
1.6.2移除約束18
1.7總結(jié)20
1.8另請參見20
1.9思考21
1.9.1深入思考21
1.9.2結(jié)合自己22
第2章精心布局——源代碼的版面和樣式23
2.1什么是關(guān)鍵24
2.2了解你的讀者25
2.3什么是好的樣式26
2.4使用括號26
2.4.1K&R括號風(fēng)格27
2.4.2懸掛式的括號風(fēng)格27
2.4.3縮進的括號風(fēng)格29
2.4.4其他的括號風(fēng)格29
2.5主宰一切的風(fēng)格30
2.6內(nèi)部風(fēng)格(以及在哪里使用它們)31
2.7設(shè)立標(biāo)準(zhǔn)33
2.8正義的戰(zhàn)爭35
2.9總結(jié)35
2.10另請參見37
2.11思考37
2.11.1深入思考37
2.11.2結(jié)合自己38
第3章名正言順——為有意義的事物起有意義的名稱39
3.1為什么我們應(yīng)該恰當(dāng)?shù)孛?1
3.2我們對什么進行命名41
3.3名字游戲42
3.3.1描述性42
3.3.2技術(shù)上正確42
3.3.3符合語言習(xí)慣43
3.3.4恰當(dāng)43
3.4具體細節(jié)44
3.4.1命名變量44
3.4.2命名函數(shù)45
3.4.3命名類型46
3.4.4命名名字空間47
3.4.5命名宏48
3.4.6命名文件48
3.5玫瑰不叫玫瑰49
3.5.1保持前后一致50
3.5.2利用上下文51
3.5.3使用對你有利的名稱51
3.6總結(jié)52
3.7另請參見53
3.8思考53
3.8.1深入思考54
3.8.2結(jié)合自己55
第4章不言自明——編寫“自文檔化”代碼的技巧57
4.1自文檔化的代碼59
4.2編寫自文檔化代碼的技術(shù)61
4.2.1使用好的樣式編寫簡單的代碼61
4.2.2選擇有意義的名稱62
4.2.3分解為原子函數(shù)62
4.2.4選擇描述性的類型63
4.2.5命名常量63
4.2.6強調(diào)重要的代碼64
4.2.7分組相關(guān)信息64
4.2.8提供文件頭64
4.2.9恰當(dāng)?shù)靥幚礤e誤65
4.2.10編寫有意義的注釋65
4.3實用的自文檔化方法66
4.3.1文學(xué)性編程66
4.3.2文檔化工具67
4.4總結(jié)69
4.5另請參見70
4.6思考71
4.6.1深入思考71
4.6.2結(jié)合自己72
第5章隨篇注釋——如何編寫代碼注釋73
5.1什么是代碼注釋74
5.2注釋看上去是什么樣的75
5.3多少注釋是恰當(dāng)?shù)?5
5.4注釋中應(yīng)該有些什么76
5.4.1解釋為什么,而不是怎么樣76
5.4.2不要描述代碼76
5.4.3不要取代代碼76
5.4.4確保注釋有用77
5.4.5避免分心78
5.5實踐79
5.6從審美的角度看注釋80
5.6.1一致性80
5.6.2清晰的塊注釋80
5.6.3縮進的注釋81
5.6.4行尾注釋81
5.6.5幫助你閱讀代碼81
5.6.6選擇一種維護成本較低的風(fēng)格82
5.6.7分隔板82
5.6.8標(biāo)志83
5.6.9文件頭注釋83
5.7使用注釋84
5.7.1幫助你編寫例行程序84
5.7.2錯誤修正通告85
5.7.3注釋過時85
5.7.4維護和空洞無物的注釋86
5.8總結(jié)86
5.9另請參見87
5.10思考87
5.10.1深入思考88
5.10.2結(jié)合自己88
第6章人非圣賢——處理不可避免的情況——代碼中的錯誤情形89
6.1從何而來90
6.2錯誤報告機制91
6.2.1不報告91
6.2.2返回值92
6.2.3錯誤狀態(tài)變量93
6.2.4異常93
6.2.5信號95
6.3檢測錯誤95
6.4處理錯誤96
6.4.1何時處理錯誤97
6.4.2可能的反應(yīng)98
6.4.3代碼示例100
6.5使地獄浮現(xiàn)104
6.6管理錯誤105
6.7總結(jié)106
6.8另請參見107
6.9思考107
6.9.1深入思考107
6.9.2結(jié)合自己108

第II篇代碼的神秘生命
第7章欲善其事,先利其器——使用工具構(gòu)建軟件111
7.1什么是軟件工具112
7.2為什么要在意工具114
7.3使工具發(fā)揮作用115
7.3.1了解它能做些什么115
7.3.2學(xué)習(xí)如何駕馭它116
7.3.3了解它適合什么任務(wù)116
7.3.4檢查它是否可用116
7.3.5找到了解更多信息的途徑117
7.3.6查明新版本何時出現(xiàn)117
7.4哪個工具117
7.4.1源代碼編輯工具118
7.4.2代碼構(gòu)建工具120
7.4.3調(diào)試和調(diào)查工具123
7.4.4語言支持工具124
7.4.5其他工具125
7.5總結(jié)126
7.6另請參見127
7.7思考128
7.7.1深入思考128
7.7.2結(jié)合自己128
第8章測試時代——測試代碼的魔術(shù)129
8.1反思現(xiàn)實131
8.2誰、是什么、何時以及為什么132
8.2.1我們?yōu)槭裁匆獪y試132
8.2.2誰來進行測試133
8.2.3測試的內(nèi)容有些什么133
8.2.4何時進行測試134
8.3測試并不難……135
8.4測試的類型138
8.5選擇單元測試用例142
8.6為測試而設(shè)計144
8.7看!不要用手!144
8.8面對故障該怎么辦145
8.9你能管理它嗎146
8.9.1缺陷跟蹤系統(tǒng)147
8.9.2bug審查148
8.10總結(jié)149
8.11另請參見150
8.12思考150
8.12.1深入思考150
8.12.2結(jié)合自己151
第9章尋找缺陷——調(diào)試:當(dāng)事情進展得不順利時該怎么辦153
9.1生活的真相154
9.2bug的種類155
9.2.1從遠處看155
9.2.2從近處看156
9.2.3從更近處看158
9.3消滅害蟲160
9.3.1地下之路161
9.3.2地上之路161
9.4搜尋bug162
9.4.1編譯時錯誤162
9.4.2運行時錯誤164
9.5如何修正缺陷167
9.6預(yù)防169
9.7除蜂劑、驅(qū)蟲劑、捕蠅紙169
9.7.1調(diào)試器169
9.7.2內(nèi)存訪問校驗器170
9.7.3系統(tǒng)調(diào)用跟蹤170
9.7.4內(nèi)核轉(zhuǎn)儲170
9.7.5日志170
9.8總結(jié)171
9.9另請參見172
9.10思考173
9.10.1深入思考173
9.10.2結(jié)合自己173
第10章代碼構(gòu)建——將源代碼轉(zhuǎn)換為可執(zhí)行代碼的過程175
10.1語言障礙176
10.1.1解釋型語言177
10.1.2編譯型語言178
10.1.3字節(jié)編譯型語言179
10.2小題大做179
10.3構(gòu)建軟件版本181
10.4怎樣才算是一個優(yōu)秀的構(gòu)建系統(tǒng)184
10.4.1簡潔184
10.4.2一致184
10.4.3可重復(fù)和可靠185
10.4.4原子性186
10.4.5能夠應(yīng)付錯誤187
10.5技術(shù)細節(jié)187
10.5.1目標(biāo)的選擇187
10.5.2內(nèi)務(wù)處理189
10.5.3依賴關(guān)系189
10.5.4自動構(gòu)建190
10.5.5構(gòu)建配置191
10.5.6遞歸地使用make192
10.6請發(fā)布我吧192
10.7構(gòu)建大師是全能的嗎194
10.8總結(jié)195
10.9另請參見195
10.10思考196
10.10.1深入思考196
10.10.2結(jié)合自己196
第11章追求速度——優(yōu)化程序和編寫高效的代碼199
11.1優(yōu)化是什么200
11.2是什么使代碼不盡如人意201
11.3為什么不進行優(yōu)化呢202
備選方案204
11.4為什么要進行優(yōu)化205
11.5優(yōu)化的具體細節(jié)206
11.5.1證明你需要進行優(yōu)化206
11.5.2找出運行得最慢的代碼207
11.5.3測試代碼208
11.5.4優(yōu)化代碼209
11.5.5優(yōu)化之后209
11.6優(yōu)化的技術(shù)210
11.6.1設(shè)計更改210
11.6.2代碼更改213
11.7編寫高效的代碼217
11.8總結(jié)219
11.9另請參見219
11.10思考220
11.10.1深入思考220
11.10.2結(jié)合自己221
第12章不安全感綜合癥——編寫安全的程序223
12.1危險224
12.2敵人226
12.3借口,都是借口228
12.4感到很脆弱229
12.4.1不安全的設(shè)計和體系結(jié)構(gòu)229
12.4.2緩沖溢出229
12.4.3嵌入的查詢字符串230
12.4.4競爭狀況231
12.4.5整數(shù)溢出231
12.5防范措施232
12.5.1系統(tǒng)安裝技術(shù)233
12.5.2軟件設(shè)計技術(shù)234
12.5.3代碼實現(xiàn)技術(shù)235
12.5.4規(guī)程技術(shù)236
12.6總結(jié)236
12.7另請參見237
12.8思考238
12.8.1深入思考238
12.8.2結(jié)合自己238

第III篇代碼的形成過程
第13章崇尚設(shè)計——如何創(chuàng)作出優(yōu)秀的軟件設(shè)計241
13.1邊設(shè)計邊編程242
13.2我們要設(shè)計什么243
13.3為什么這么忙亂244
13.4良好的軟件設(shè)計245
13.4.1簡潔246
13.4.2優(yōu)雅247
13.4.3模塊化247
13.4.4良好的接口248
13.4.5可擴展性251
13.4.6避免重復(fù)251
13.4.7可移植性252
13.4.8符合語言習(xí)慣252
13.4.9良好地文檔化253
13.5如何設(shè)計代碼253
13.5.1設(shè)計方法和過程254
13.5.2設(shè)計工具255
13.6總結(jié)257
13.7另請參見258
13.8思考258
13.8.1深入思考258
13.8.2結(jié)合自己259
第14章軟件體系結(jié)構(gòu)——奠定軟件設(shè)計的基礎(chǔ)261
14.1什么是軟件體系結(jié)構(gòu)262
14.1.1軟件藍圖262
14.1.2視圖263
14.1.3在何時和何處進行體系結(jié)構(gòu)設(shè)計264
14.1.4用體系結(jié)構(gòu)來做什么265
14.1.5關(guān)于組件和連接266
14.2什么是良好的體系結(jié)構(gòu)268
14.3體系結(jié)構(gòu)風(fēng)格269
14.3.1沒有體系結(jié)構(gòu)269
14.3.2分層的體系結(jié)構(gòu)270
14.3.3管道和過濾器體系結(jié)構(gòu)271
14.3.4客戶端/服務(wù)器體系結(jié)構(gòu)271
14.3.5基于組件的體系結(jié)構(gòu)273
14.3.6框架274
14.4總結(jié)275
14.5另請參見276
14.6思考276
14.6.1深入思考276
14.6.2結(jié)合自己277
第15章改良與革命——代碼是如何成長的279
15.1軟件腐爛281
15.2警告信號282
15.3代碼是如何成長的284
15.4相信不可能之事286
15.5對此我們可以做些什么287
15.5.1編寫新代碼287
15.5.2維護現(xiàn)有代碼288
15.6總結(jié)290
15.7另請參見290
15.8思考291
15.8.1深入思考292
15.8.2結(jié)合自己292

第IV篇 “一群”程序員
第16章代碼猴子——培養(yǎng)正確的編程態(tài)度和方法295
16.1各種各樣的猴子296
16.1.1賣力工作的程序員297
16.1.2代碼猴子298
16.1.3權(quán)威299
16.1.4半權(quán)威300
16.1.5傲慢的天才300
16.1.6牛仔302
16.1.7規(guī)劃者302
16.1.8老前輩303
16.1.9狂熱者304
16.1.10單線條程序員305
16.1.11拖沓者306
16.1.12勉強的團隊領(lǐng)導(dǎo)306
16.1.13你307
16.2理想的程序員308
16.3那么該怎么辦308
16.4最愚蠢的人309
16.5總結(jié)310
16.6另請參見310
16.7行為表格311
16.8思考312
16.8.1深入思考312
16.8.2結(jié)合自己312
第17章團結(jié)就是力量——團隊合作與個人程序員315
17.1我們的團隊——概覽316
17.2團隊組織318
17.2.1管理方法318
17.2.2責(zé)任劃分318
17.2.3組織和代碼結(jié)構(gòu)320
17.3團隊合作工具320
17.4團隊疾病322
17.4.1巴別塔322
17.4.2獨裁制324
17.4.3民主制325
17.4.4衛(wèi)星站327
17.4.5大峽谷329
17.4.6流沙330
17.4.7旅鼠332
17.5良好團隊合作的個人技巧和特點333
17.5.1溝通333
17.5.2謙虛334
17.5.3處理沖突334
17.5.4學(xué)習(xí)和適應(yīng)能力335
17.5.5了解你的不足之處336
17.6團隊合作原則336
17.6.1集體代碼所有制336
17.6.2尊重別人的代碼337
17.6.3編碼準(zhǔn)則337
17.6.4定義成功337
17.6.5定義責(zé)任338
17.6.6避免倦怠338
17.7團隊的生命周期339
17.7.1團隊的創(chuàng)建339
17.7.2團隊的成長341
17.7.3團隊合作342
17.7.4團隊結(jié)束343
17.8總結(jié)345
17.9另請參見346
17.10行為表格347
17.11思考348
17.11.1深入思考348
17.11.2結(jié)合自己348
第18章安全措施——源代碼控制與自我控制349
18.1我們的責(zé)任350
18.2源代碼控制351
18.2.1修訂控制352
18.2.2訪問控制353
18.2.3處理代碼庫354
18.2.4在代碼樹上創(chuàng)建分支354
18.2.5源代碼控制簡史356
18.3配置管理356
18.4備份358
18.5發(fā)布源代碼359
18.6應(yīng)該將源代碼放在哪里360
18.7總結(jié)361
18.8另請參見362
18.9思考363
18.9.1深入思考363
18.9.2結(jié)合自己363

第V篇開發(fā)過程的組成部分第一部分
第19章注意細節(jié)——編寫軟件規(guī)范367
19.1規(guī)范到底是什么368
19.2規(guī)范的類型369
19.2.1需求規(guī)范371
19.2.2功能規(guī)范373
19.2.3系統(tǒng)體系結(jié)構(gòu)規(guī)范373
19.2.4用戶界面規(guī)范374
19.2.5設(shè)計規(guī)范374
19.2.6測試規(guī)范375
19.3規(guī)范應(yīng)當(dāng)包含哪些內(nèi)容376
19.4規(guī)范編寫過程379
19.5我們?yōu)槭裁磿痪帉懸?guī)范381
19.6總結(jié)383
19.7另請參見383
19.8思考384
19.8.1深入思考384
19.8.2結(jié)合自己384
第20章代碼審查——執(zhí)行代碼審查385
20.1什么是代碼審查386
20.2何時進行審查387
20.2.1是否要進行審查388
20.2.2審查哪些代碼389
20.3執(zhí)行代碼審查389
20.3.1代碼審查會議390
20.3.2集成審查392
20.4審查你的態(tài)度393
20.4.1作者的態(tài)度393
20.4.2審查人員的態(tài)度394
20.5完美的代碼395
20.6代碼審查之外396
20.7總結(jié)397
20.8另請參見397
20.9清單398
20.10思考399
20.10.1深入思考399
20.10.2結(jié)合自己399
第21章時間估計——軟件時間范圍估計的魔術(shù)401
21.1在黑暗中摸索402
21.2為什么估計這么困難?403
21.3壓力之下405
21.4實用的估計方法406
21.5計劃游戲409
21.6堅持!412
21.7總結(jié)415
21.8另請參見415
21.9思考416
21.9.1深入思考416
21.9.2結(jié)合自己416

第VI篇從高處鳥瞰
第22章程序秘方——代碼開發(fā)的方法和過程419
22.1編程風(fēng)格420
22.1.1結(jié)構(gòu)化編程421
22.1.2面向?qū)ο蟮某绦蛟O(shè)計422
22.1.3函數(shù)式編程423
22.1.4邏輯編程424
22.2烹飪方法:做什么與怎樣做424
22.3開發(fā)過程425
22.3.1混亂426
22.3.2瀑布模型427
22.2.3SSADM和PRINCE429
22.3.4V模型430
22.3.5原型設(shè)計430
22.3.6迭代和增量開發(fā)432
22.3.7螺旋模型432
22.3.8敏捷的方法433
22.3.9其他開發(fā)過程434
22.4已經(jīng)夠了!435
22.5選擇一種過程436
22.6總結(jié)437
22.7另請參見438
22.8思考438
22.8.1深入思考438
22.8.2結(jié)合自己439
第23章編程領(lǐng)域大觀——不同的編程分支441
23.1應(yīng)用程序編程442
23.1.1塑裝軟件443
23.1.2定制應(yīng)用程序444
23.2游戲編程445
23.3系統(tǒng)編程446
23.4嵌入式編程447
23.5分布式編程450
23.6網(wǎng)絡(luò)應(yīng)用程序編程451
23.7企業(yè)編程453
23.8數(shù)字編程454
23.9那又怎樣455
23.10總結(jié)456
23.11另請參見456
23.12思考457
23.12.1深入思考457
23.12.2結(jié)合自己457
第24章下一步呢——結(jié)果好就一切都好459
但下一步該做什么呢?460
答案和討論463
參考書目559
索引564

本目錄推薦

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