買這商品的人也買了...
-
$880$695 -
$450$405 -
$653代碼大全, 2/e (Code Complete: A Practical Handbook of Software Construction, 2/e)
-
$420$332 -
$940$700 -
$403Python 基礎教程(第2版修訂版)(Beginning Python: From Novice to Professional, 2/e)
-
$281程序員修煉之道 :從小工到專家 (The Pragmatic Programmer: From Journeyman to Master)
-
$500操作系統原理與應用(第4版)(Guide to Operating Systems,4th Edition)
-
$280清華大學電子工程系核心課系列教材:數據與算法
-
$305軟件工程入門經典
-
$500HTML5 Web開發最佳實踐:使用CSS JavaScript和多媒體
-
$258$245 -
$230枕邊算法書
-
$458C++ 從入門到精通 (項目案例版)
-
$454Spring 微服務架構設計, 2/e
-
$564精通Spring Cloud微服務架構
-
$880$748 -
$454支付平臺架構:業務、規劃、設計與實現
-
$556Java 架構之完美設計:實戰經典
-
$780$608 -
$780$663 -
$534$507 -
$536架構設計 2.0:大型分佈式系統架構方法論與實踐
-
$690$538 -
$780$616
相關主題
商品描述
<內容簡介>
雖然劣質代碼一樣可以運行,但是劣質代碼的存在就會產生潛在bug,或者增加閱難度與理解困難,也增加了維護成本等不利影響,因此我們要追求高質量代碼。最佳編程,從內容上分析了拙劣代碼的表現形式(現象),分析了其不利影響,給出了最佳解決方案。同時給出了劣質代碼的檢查工具與方法,並汲取了Checkstyle、Findebug、PMD、Jtest等靜態代碼品質分析工具常見劣質代碼現象。又利用最常用的28種重構技巧,演示了代碼由劣質變優秀的過程。
<章節目錄>
序
前言
第1章代碼質量1
1.1什麼是代碼質量1
1.2什麼是軟件質量1
1.3代碼質量與軟件質量1
1.4代碼質量優化理論2
1.5提高代碼質量手段3
小結3
第2章代碼質量靜態檢查工具4
2.1靜態分析技術概述4
2.2靜態分析技術原理4
2.3靜態分析技術給我們帶來的好處5
2.4常用重要靜態分析工具6
2.5如何優化靜態分析工具6
小結11
第3章代碼質量優化通用準則12
3.1避免使用空塊12
3.2避免使用空類15
3.3去掉多餘的import16
3.4剪切無效代碼17
3.5制定命名體系規約18
編程解密一:完美規約20
優化技巧01:按照命名規約賦予名稱20
3.6去掉重複代碼21
3.7如何優雅使用switch語句22
3.8用大寫“L”代替小寫“l”定義long變量24
3.9避免在一條語句中聲明或賦值多個變量25
3.10去掉控制標誌的臨時變量26
優化技巧02:移除控制標誌臨時變量27
3.11避免賦予臨時變量過多的角色28
優化技巧03:賦予臨時變量單一職責29
3.12避免使用魔法數字29
優化技巧04:用常量取代魔法數字30
3.13在for循環內修正增量因子有什麼弊端31
3.14用Enum代替Integer類型碼常量32
優化技巧05:用枚舉取代類型碼34
3.15用BigDecimal類型進行精確計算35
3.16避免混用“+”36
3.17避免混用複雜運算符37
3.18避免使用複雜條件式或分支38
優化技巧06:用代碼片段拆分複雜表達式41
優化技巧07:用衛語句代替嵌套條件表達式42
優化技巧08:用多態代替條件表達式43
3.19如何深入理解“= ;= ”的真正含義44
3.20要習慣於用泛型代替原生類型48
3.21如何正確使用通配符的邊界53
3.22如何發揮正則表達式的威力55
小結58
第4章方法優化技巧59
4.1最小化原則59
優化技巧09 :封裝類成員60
4.2 hashCode()與equals()是個孿生兄弟61
4.3使用string.equals("String")帶來的弊端66
4.4避免命名不具有繼承關係的同名方法67
4.5檢查參數的有效性68
4.6避免使用可變參數69
4.7如何優化過長參數72
優化技巧10:把參數提升成類成員變量73
優化技巧11:引入參數對象74
4.8為什麼不要重寫靜態方法75
4.9避免使用過時的API77
4.10優雅的集合運算方法知多少78
4.11避免重複發明輪子81
4.12如何對臃腫的方法進行瘦身82
優化技巧12:分解方法84
優化技巧13:合併方法85
小結85
第5章如何保證多線程代碼質量86
5.1為什麼不要重寫start()方法86
5.2避免使用非線程安全的初始化方法87
5.3用final成員對像作為同期化對象鎖90
5.4在synchronized內使用wait()方法92
5.5盡量縮小同期化代碼範圍93
小結94
第6章如何優化類與接口95
6.1避免創建不必要的對象95
6.2避免使用對象的淺拷貝96
6.3如何正確放置靜態區位置100
6.4為什麼不要使用靜態引入102
6.5如何正確使用instanceof103
6.6避免實例化特有工具類106
6.7避免有深度耦合的類關係107
優化技巧14:移動變量110
優化技巧15:移動方法112
6.8如何為臃腫的類進行手術114
優化技巧16:分解類116
6.9如何優化冗贅類117
優化技巧17:合併類118
6.10避免在接口中出現實現代碼119
小結120
第7章如何正確使用異常121
7.1避免定義繼承Error或Throwable子類121
7.2避免拋出RuntimeException或Exception122
7.3避免捕獲NullPointerException或Error124
7.4避免在finally塊中處理返回值125
7.5避免使失敗失去原子性127
7.6如何對異常進行封裝128
優化技巧18:用異常代替錯誤碼129
7.7將優雅的異常信息反饋給用戶130
7.8避免亂用異常131
小結133
第8章如何優化代碼性能134
8.1避免在大量字符串拼接時用“+”134
8.2避免在循環體內生成臨時對象135
8.3在頻繁插入與刪除時使用LinkedList137
8.4在文件操作後要進行清理動作139
編程解密四:完美改造140
8.5避免顯示調用finalized()方法142
小結143
第9章架構優化144
9.1單一職責原則144
優化技巧19:梳理並分解類職責145
9.2接口隔離原則147
優化技巧20:隔離接口149
9.3依賴倒 置原則151
優化技巧21:提煉接口152
9.4裡式替換原則154
9.5最少知道原則155
9.6如何擴展外部類功能159
優化技巧22:引入本地擴展160
9.7如何梳理混雜的架構體系160
優化技巧23:以委託代替繼承165
優化技巧24:封裝向下轉型165
優化技巧25:提煉繼承體系167
優化技巧26:折疊繼承體系169
小結170
第10章包優化172
10.1發布等價原則172
10.2共同重用原則173
10.3共同封閉原則174
10.4無環依賴原則176
10.5如何保持包的清晰179
優化技巧28:規整包中類位置180
編程解密五:完美優化181
10.6如何抽出框架層次182
10.7如何提取框架工程183
小結189
第11章優良代碼風格190
11.1如何優化代碼格式工具190
11.2如何統一標準的代碼格式193
11.3養成良好的代碼註釋習慣194
編程解密六:完美突破196
小結198
結束語199
附錄200
參考文獻229
<作者介紹>
顏廷吉,山東臨沂人,畢業於北京大學軟件與微電子學院,碩士學位。上海頤凡軟件科技有限公司創始人兼首席架構師,高級系統工程師,“頤凡Java應用開發平臺”軟件著作權人,擁有PMP、OCP、LIP-3等各種高級國際技術認證證書,日本國家高度人才。
2007年就職於NTTDATA集團公司,任研發部主任,從事一線軟件研發與設計近十年。曾經主導與參與了日本厚生勞動省HelloWork就職勞動項目、
Taspo全國香煙自動販賣項目、飲料自動販賣機販賣信息採集項目等大型系統的設計與研發,曾連續多年獲得公司社長獎,優秀項目獎等各種獎項。