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

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

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

定 價:¥79.00

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

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

內(nèi)容簡介

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

作者簡介

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

圖書目錄

第I篇代碼表面
第1章善于防守——健壯代碼的防御性編程技巧3
1.1向優(yōu)秀的代碼前進4
1.2設想:最壞的選擇4
1.3什么是防御性編程6
1.4又大又壞的世界8
1.5防御性編程技巧8
1.5.1使用好的編碼風格和合理的設計9
1.5.2不要倉促地編寫代碼9
1.5.3不要相信任何人10
1.5.4編碼的目標是清晰,而不是簡潔10
1.5.5不要讓任何人做他們不該做的修補工作11
1.5.6編譯時打開所有警告開關11
1.5.7使用靜態(tài)分析工具12
1.5.8使用安全的數(shù)據(jù)結構12
1.5.9檢查所有的返回值13
1.5.10審慎地處理內(nèi)存(和其他寶貴的資源)13
1.5.11在聲明位置初始化所有變量14
1.5.12盡可能推遲一些聲明變量14
1.5.13使用標準語言工具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總結20
1.8另請參見20
1.9思考21
1.9.1深入思考21
1.9.2結合自己22
第2章精心布局——源代碼的版面和樣式23
2.1什么是關鍵24
2.2了解你的讀者25
2.3什么是好的樣式26
2.4使用括號26
2.4.1K&R括號風格27
2.4.2懸掛式的括號風格27
2.4.3縮進的括號風格29
2.4.4其他的括號風格29
2.5主宰一切的風格30
2.6內(nèi)部風格(以及在哪里使用它們)31
2.7設立標準33
2.8正義的戰(zhàn)爭35
2.9總結35
2.10另請參見37
2.11思考37
2.11.1深入思考37
2.11.2結合自己38
第3章名正言順——為有意義的事物起有意義的名稱39
3.1為什么我們應該恰當?shù)孛?1
3.2我們對什么進行命名41
3.3名字游戲42
3.3.1描述性42
3.3.2技術上正確42
3.3.3符合語言習慣43
3.3.4恰當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總結52
3.7另請參見53
3.8思考53
3.8.1深入思考54
3.8.2結合自己55
第4章不言自明——編寫“自文檔化”代碼的技巧57
4.1自文檔化的代碼59
4.2編寫自文檔化代碼的技術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分組相關信息64
4.2.8提供文件頭64
4.2.9恰當?shù)靥幚礤e誤65
4.2.10編寫有意義的注釋65
4.3實用的自文檔化方法66
4.3.1文學性編程66
4.3.2文檔化工具67
4.4總結69
4.5另請參見70
4.6思考71
4.6.1深入思考71
4.6.2結合自己72
第5章隨篇注釋——如何編寫代碼注釋73
5.1什么是代碼注釋74
5.2注釋看上去是什么樣的75
5.3多少注釋是恰當?shù)?5
5.4注釋中應該有些什么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選擇一種維護成本較低的風格82
5.6.7分隔板82
5.6.8標志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總結86
5.9另請參見87
5.10思考87
5.10.1深入思考88
5.10.2結合自己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可能的反應98
6.4.3代碼示例100
6.5使地獄浮現(xiàn)104
6.6管理錯誤105
6.7總結106
6.8另請參見107
6.9思考107
6.9.1深入思考107
6.9.2結合自己108

第II篇代碼的神秘生命
第7章欲善其事,先利其器——使用工具構建軟件111
7.1什么是軟件工具112
7.2為什么要在意工具114
7.3使工具發(fā)揮作用115
7.3.1了解它能做些什么115
7.3.2學習如何駕馭它116
7.3.3了解它適合什么任務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代碼構建工具120
7.4.3調(diào)試和調(diào)查工具123
7.4.4語言支持工具124
7.4.5其他工具125
7.5總結126
7.6另請參見127
7.7思考128
7.7.1深入思考128
7.7.2結合自己128
第8章測試時代——測試代碼的魔術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為測試而設計144
8.7看!不要用手!144
8.8面對故障該怎么辦145
8.9你能管理它嗎146
8.9.1缺陷跟蹤系統(tǒng)147
8.9.2bug審查148
8.10總結149
8.11另請參見150
8.12思考150
8.12.1深入思考150
8.12.2結合自己151
第9章尋找缺陷——調(diào)試:當事情進展得不順利時該怎么辦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預防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總結171
9.9另請參見172
9.10思考173
9.10.1深入思考173
9.10.2結合自己173
第10章代碼構建——將源代碼轉(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構建軟件版本181
10.4怎樣才算是一個優(yōu)秀的構建系統(tǒng)184
10.4.1簡潔184
10.4.2一致184
10.4.3可重復和可靠185
10.4.4原子性186
10.4.5能夠應付錯誤187
10.5技術細節(jié)187
10.5.1目標的選擇187
10.5.2內(nèi)務處理189
10.5.3依賴關系189
10.5.4自動構建190
10.5.5構建配置191
10.5.6遞歸地使用make192
10.6請發(fā)布我吧192
10.7構建大師是全能的嗎194
10.8總結195
10.9另請參見195
10.10思考196
10.10.1深入思考196
10.10.2結合自己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)化的技術210
11.6.1設計更改210
11.6.2代碼更改213
11.7編寫高效的代碼217
11.8總結219
11.9另請參見219
11.10思考220
11.10.1深入思考220
11.10.2結合自己221
第12章不安全感綜合癥——編寫安全的程序223
12.1危險224
12.2敵人226
12.3借口,都是借口228
12.4感到很脆弱229
12.4.1不安全的設計和體系結構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)安裝技術233
12.5.2軟件設計技術234
12.5.3代碼實現(xiàn)技術235
12.5.4規(guī)程技術236
12.6總結236
12.7另請參見237
12.8思考238
12.8.1深入思考238
12.8.2結合自己238

第III篇代碼的形成過程
第13章崇尚設計——如何創(chuàng)作出優(yōu)秀的軟件設計241
13.1邊設計邊編程242
13.2我們要設計什么243
13.3為什么這么忙亂244
13.4良好的軟件設計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避免重復251
13.4.7可移植性252
13.4.8符合語言習慣252
13.4.9良好地文檔化253
13.5如何設計代碼253
13.5.1設計方法和過程254
13.5.2設計工具255
13.6總結257
13.7另請參見258
13.8思考258
13.8.1深入思考258
13.8.2結合自己259
第14章軟件體系結構——奠定軟件設計的基礎261
14.1什么是軟件體系結構262
14.1.1軟件藍圖262
14.1.2視圖263
14.1.3在何時和何處進行體系結構設計264
14.1.4用體系結構來做什么265
14.1.5關于組件和連接266
14.2什么是良好的體系結構268
14.3體系結構風格269
14.3.1沒有體系結構269
14.3.2分層的體系結構270
14.3.3管道和過濾器體系結構271
14.3.4客戶端/服務器體系結構271
14.3.5基于組件的體系結構273
14.3.6框架274
14.4總結275
14.5另請參見276
14.6思考276
14.6.1深入思考276
14.6.2結合自己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總結290
15.7另請參見290
15.8思考291
15.8.1深入思考292
15.8.2結合自己292

第IV篇 “一群”程序員
第16章代碼猴子——培養(yǎng)正確的編程態(tài)度和方法295
16.1各種各樣的猴子296
16.1.1賣力工作的程序員297
16.1.2代碼猴子298
16.1.3權威299
16.1.4半權威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勉強的團隊領導306
16.1.13你307
16.2理想的程序員308
16.3那么該怎么辦308
16.4最愚蠢的人309
16.5總結310
16.6另請參見310
16.7行為表格311
16.8思考312
16.8.1深入思考312
16.8.2結合自己312
第17章團結就是力量——團隊合作與個人程序員315
17.1我們的團隊——概覽316
17.2團隊組織318
17.2.1管理方法318
17.2.2責任劃分318
17.2.3組織和代碼結構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學習和適應能力335
17.5.5了解你的不足之處336
17.6團隊合作原則336
17.6.1集體代碼所有制336
17.6.2尊重別人的代碼337
17.6.3編碼準則337
17.6.4定義成功337
17.6.5定義責任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團隊結束343
17.8總結345
17.9另請參見346
17.10行為表格347
17.11思考348
17.11.1深入思考348
17.11.2結合自己348
第18章安全措施——源代碼控制與自我控制349
18.1我們的責任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應該將源代碼放在哪里360
18.7總結361
18.8另請參見362
18.9思考363
18.9.1深入思考363
18.9.2結合自己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)體系結構規(guī)范373
19.2.4用戶界面規(guī)范374
19.2.5設計規(guī)范374
19.2.6測試規(guī)范375
19.3規(guī)范應當包含哪些內(nèi)容376
19.4規(guī)范編寫過程379
19.5我們?yōu)槭裁磿痪帉懸?guī)范381
19.6總結383
19.7另請參見383
19.8思考384
19.8.1深入思考384
19.8.2結合自己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總結397
20.8另請參見397
20.9清單398
20.10思考399
20.10.1深入思考399
20.10.2結合自己399
第21章時間估計——軟件時間范圍估計的魔術401
21.1在黑暗中摸索402
21.2為什么估計這么困難?403
21.3壓力之下405
21.4實用的估計方法406
21.5計劃游戲409
21.6堅持!412
21.7總結415
21.8另請參見415
21.9思考416
21.9.1深入思考416
21.9.2結合自己416

第VI篇從高處鳥瞰
第22章程序秘方——代碼開發(fā)的方法和過程419
22.1編程風格420
22.1.1結構化編程421
22.1.2面向?qū)ο蟮某绦蛟O計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原型設計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總結437
22.7另請參見438
22.8思考438
22.8.1深入思考438
22.8.2結合自己439
第23章編程領域大觀——不同的編程分支441
23.1應用程序編程442
23.1.1塑裝軟件443
23.1.2定制應用程序444
23.2游戲編程445
23.3系統(tǒng)編程446
23.4嵌入式編程447
23.5分布式編程450
23.6網(wǎng)絡應用程序編程451
23.7企業(yè)編程453
23.8數(shù)字編程454
23.9那又怎樣455
23.10總結456
23.11另請參見456
23.12思考457
23.12.1深入思考457
23.12.2結合自己457
第24章下一步呢——結果好就一切都好459
但下一步該做什么呢?460
答案和討論463
參考書目559
索引564

本目錄推薦

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