TOP
0
0
【簡體曬書節】 單本79折,5本7折,優惠只到5/31,點擊此處看更多!
提醒您!您有折價券未完成領取,請盡速登入以保存至您的帳號。
代碼整潔之道(簡體書)
滿額折

代碼整潔之道(簡體書)

商品資訊

人民幣定價:99 元
定價
:NT$ 594 元
優惠價
87517
領券後再享88折起
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:15 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

軟件質量,不但依賴架構及項目管理,而且與代碼質量緊密相關。這一點,無論是敏捷開發流派還是傳統開發流派,都不得不承認。
本書提出一種觀點:代碼質量與其整潔度成正比。乾淨的代碼,既在質量上較為可靠,也為後期維護、升級奠定了良好基礎。作為編程領域的佼佼者,本書作者給出了一系列行之有效的整潔代碼操作實踐。這些實踐在本書中體現為一條條規則(或稱“啟示”),並輔以來自實際項目的正、反兩面的範例。只要遵循這些規則,就能編寫出乾淨的代碼,從而有效提升代碼質量。
本書閱讀對象為一切有志於改善代碼質量的程序員及技術經理。書中介紹的規則均來自作者多年的實踐經驗,涵蓋從命名到重構的多個編程方面,雖為一“家”之言,然誠有可資借鑒的價值。

作者簡介

作者簡介
羅伯特·C.,馬丁(Robert,C.,Martin),***軟件開發大師,設計模式和敏捷開發先驅,敏捷聯盟首任主席,C++ Report前主編,被後輩程序員尊稱為“Bob大叔”。20世紀70年代初成為職業程序員,後創辦Object Mentor公司並任總裁。Martin還是一名多產的作家,至今已發表數百篇文章、論文和博客文章。除本書外,還著有《代碼整潔之道:程序員的職業素養》《敏捷軟件開發:原則、模式和實踐》《UML:Java程序員指南》等。

譯者簡介
韓磊,互聯網產品與社區運營專家,技術書籍著譯者。曾任CSDN及《程序員》雜誌副總經理、總編輯,廣東二十一世紀傳媒新媒體事業部總經理等職。現任AR初創企業亮風台廣州公司總經理。除本書外,還譯有《夢斷代碼》《C#編程風格》等書。與劉韌合著《網絡媒體教程》,與戴飛合譯《Beginning C# Objects中文版:概念到代碼》。

名人/編輯推薦

“閱讀這本書有兩種原因:第一,你是個程序員;第二,你想成為更好的程序員。很好,IT行業需要更好的程序員!”――羅伯特·C. 馬丁(Robert C. Martin)

儘管糟糕的代碼也能運行,但如果代碼不整潔,會使整個開發團隊泥足深陷,寫得不好的代碼每年都要耗費難以計數的時間和資源。但是,這種情況並非無法避免。
著名軟件專家羅伯特·C. 馬丁(Robert C. Martin) 在本書中為你呈現了革命性的視野。他攜同Object Mentor公司的同事,從他們有關整潔代碼的*佳敏捷實踐中提煉出軟件技藝的價值觀,以饗讀者,讓你成為更優秀的程序員――只要你著手研讀本書。
閱讀本書需要你做些什麼呢?你將閱讀代碼――大量代碼。本書會促使你思考何謂正確的代碼,何謂錯誤的代碼。更重要的是,本書將促使你重新評估自己的專業價值觀,以及對自己技藝的承諾。
書中的具體內容包括:
·好代碼和糟糕的代碼之間的區別;
·如何編寫好代碼,如何將糟糕的代碼轉化為好代碼;
·如何創建好名稱、好函數、好對象和好類;
·如何格式化代碼以實現其可讀性的*大化;
·如何在不妨礙代碼邏輯的前提下充分實現錯誤處理;
·如何進行單元測試和測試驅動開發。

目次

目 錄

第1章 整潔代碼 1

1.1 要有代碼 2

1.2 糟糕的代碼 2

1.3 混亂的代價 3

1.3.1 華麗新設計 4

1.3.2 態度 4

1.3.3 謎題 5

1.3.4 整潔代碼的藝術 5

1.3.5 什麼是整潔代碼 6

1.4 思想流派 10

1.5 我們是作者 11

1.6 童子軍軍規 12

1.7 前傳與原則 12

1.8 小結 13

1.9 文獻 13

第2章 有意義的命名 14

2.1 介紹 14

2.2 名副其實 15

2.3 避免誤導 16

2.4 做有意義的區分 17

2.5 使用讀得出來的名稱 18

2.6 使用可搜索的名稱 19

2.7 避免使用編碼 20

2.7.1 匈牙利語標記法 20

2.7.2 成員前綴 21

2.7.3 接口和實現 21

2.8 避免思維映射 21

2.9 類名 22

2.10 方法名 22

2.11 別抖機靈 22

2.12 每個概念對應一個詞 23

2.13 別用雙關語 23

2.14 使用解決方案領域名稱 24

2.15 使用源自所涉問題領域的名稱 24

2.16 添加有意義的語境 24

2.17 不要添加沒用的語境 26

2.18 最後的話 27

第3章 函數 28

3.1 短小 31

3.2 只做一件事 32

3.3 每個函數一個抽象層級 33

3.4 switch語句 34

3.5 使用具有描述性的名稱 35

3.6 函數參數 36

3.6.1 單參數函數的普遍形式 37

3.6.2 標識參數 37

3.6.3 雙參數函數 38

3.6.4 三參數函數 38

3.6.5 參數對象 39

3.6.6 參數列表 39

3.6.7 動詞與關鍵字 39

3.7 無副作用 40

3.8 分隔指令與詢問 41

3.9 使用異常替代返回錯誤碼 42

3.9.1 抽離try/catch代碼塊 42

3.9.2 錯誤處理就是一件事 43

3.9.3 Error.java依賴磁鐵 43

3.10 別重複自己 44

3.11 結構化編程 44

3.12 如何寫出這樣的函數 45

3.13 小結 45

3.14 SetupTeardownIncluder程序 45

3.15 文獻 48

第4章 注釋 49

4.1 注釋不能美化糟糕的代碼 50

4.2 用代碼來闡述 51

4.3 好注釋 51

4.3.1 法律信息 51

4.3.2 提供信息的注釋 51

4.3.3 對意圖的解釋 52

4.3.4 闡釋 53

4.3.5 警示 53

4.3.6 TODO注釋 54

4.3.7 放大 55

4.3.8 公共API中的Javadoc 55

4.4 壞注釋 55

4.4.1 喃喃自語 55

4.4.2 多餘的注釋 56

4.4.3 誤導性注釋 58

4.4.4 循規式注釋 59

4.4.5 日誌式注釋 59

4.4.6 廢話注釋 60

4.4.7 可怕的廢話 62

4.4.8 能用函數或變量時就別用注釋 62

4.4.9 位置標記 62

4.4.10 括號後面的注釋 63

4.4.11 歸屬與署名 63

4.4.12 注釋掉的代碼 64

4.4.13 HTML注釋 64

4.4.14 非本地信息 65

4.4.15 信息過多 65

4.4.16 不明顯的聯繫 66

4.4.17 函數頭 66

4.4.18 非公共代碼中的Javadoc 66

4.4.19 範例 66

4.5 文獻 70

第5章 格式 71

5.1 格式的目的 72

5.2 垂直格式 72

5.2.1 向報紙學習 73

5.2.2 概念間垂直方向上的區隔 73

5.2.3 垂直方向上的靠近 74

5.2.4 垂直距離 75

5.2.5 垂直順序 79

5.3 橫向格式 80

5.3.1 水平方向上的區隔與靠近 81

5.3.2 水平對齊 82

5.3.3 縮進 83

5.3.4 空範圍 84

5.4 團隊規則 85

5.5 “鮑勃大叔”的格式規則 85

第6章 對象和數據結構 88

6.1 數據抽象 88

6.2 數據、對象的反對稱性 90

6.3 得墨忒耳律 92

6.3.1 火車失事 92

6.3.2 混雜 93

6.3.3 隱藏結構 93

6.4 數據傳送對象 94

6.5 小結 95

6.6 文獻 96

第7章 錯誤處理 97

7.1 使用異常而非返回碼 98

7.2 先寫try-catch-finally語句 99

7.3 使用未檢異常 100

7.4 給出異常發生的環境說明 101

7.5 依調用者需要定義異常類 101

7.6 定義常規流程 103

7.7 別返回值 104

7.8 別傳遞值 105

7.9 小結 106

7.10 文獻 106

第8章 邊界 107

8.1 使用第三方代碼 108

8.2 瀏覽和學習邊界 109

8.3 學習log4j 110

8.4 學習性測試的好處不只是免費 112

8.5 使用尚不存在的代碼 112

8.6 整潔的邊界 113

8.7 文獻 114

第9章 單元測試 115

9.1 TDD三定律 116

9.2 保持測試整潔 117

9.3 整潔的測試 118

9.3.1 面向特定領域的測試語言 120

9.3.2 雙重標準 121

9.4 每個測試一個斷言 123

9.5 F.I.R.S.T. 125

9.6 小結 125

9.7 文獻 126

第10章 類 127

10.1 類的組織 128

10.2 類應該短小 128

10.2.1 單一權責原則 130

10.2.2 內聚 131

10.2.3 保持內聚性就會得到許多短小的類 132

10.3 為了修改而組織 138

10.4 文獻 141

第11章 系統 142

11.1 如何建造一個城市 143

11.2 將系統的構造與使用分開 143

11.2.1 分解main 144

11.2.2 工廠 145

11.2.3 依賴注入 145

11.3 擴容 146

11.4 Java代理 149

11.5 純Java AOP框架 151

11.6 AspectJ的方面 154

11.7 測試驅動系統架構 154

11.8 優化決策 155

11.9 明智使用添加了可論證價值的標準 155

11.10 系統需要領域特定語言 156

11.11 小結 156

11.12 文獻 156

第12章 迭進 158

12.1 通過迭進設計達到整潔目的 158

12.2 簡單設計規則1:運行所有測試 159

12.3 簡單設計規則2~4:重構 159

12.4 不可重複 160

12.5 表達力 162

12.6 盡可能少的類和方法 163

12.7 小結 163

12.8 文獻 163

第13章 併發編程 164

13.1 為什麼要併發 165

13.2 挑戰 166

13.3 併發防禦原則 167

13.3.1 單一權責原則 167

13.3.2 推論:限制數據作用域 167

13.3.3 推論:使用數據副本 168

13.3.4 推論:線程應盡可能地獨立 168

13.4 瞭解Java庫 168

13.5 瞭解執行模型 169

13.5.1 生產者-消費者模型 170

13.5.2 讀者-作者模型 170

13.5.3 宴席哲學家 170

13.6 警惕同步方法之間的依賴 170

13.7 保持同步區域微小 171

13.8 很難編寫正確的關閉代碼 171

13.9 測試線程代碼 172

13.9.1 將偽失敗看作可能的線程問題 172

13.9.2 先使非線程代碼可工作 172

13.9.3 編寫可插拔的線程代碼 173

13.9.4 編寫可調整的線程代碼 173

13.9.5 運行多於處理器數量的線程 173

13.9.6 在不同平臺上運行 173

13.9.7 裝置試錯代碼 174

13.9.8 硬編碼 174

13.9.9 自動化 175

13.10 小結 176

13.11 文獻 176

第14章 逐步改進 177

14.1 Args的實現 178

14.2 Args:草稿 185

14.2.1 所以我暫停了 196

14.2.2 漸進 197

14.3 字符串類型參數 199

14.4 小結 236

第15章 JUnit內幕 237

15.1 JUnit框架 238

15.2 小結 251

第16章 重構SerialDate 252

16.1 首先,讓它能工作 253

16.2 讓它做對 255

16.3 小結 268

16.4 文獻 268

第17章 味道與啟發 269

17.1 注釋 270

17.2 環境 271

17.3 函數 271

17.4 一般性問題 272

17.5 Java 288

17.6 名稱 291

17.7 測試 295

17.8 小結 296

17.9 文獻 296

附錄A 併發編程II 297

附錄B org.jfree.date.SerialDate 326

結束語 388

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 517
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區