Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

java搬磚工人發表於2020-06-13

在通往"Java技術殿堂"的路上,本書將為你指點迷津!內容全部由Java編碼的最佳

實踐組成,從語法、程式設計和架構、工具和框架、編碼風格和程式設計思想等五大方面,對

Java程式設計師遇到的各種棘手的疑難問題給出了經驗性的解決方案,為Java程式設計師如何編寫

高質量的Java程式碼提出了151條極為寶貴的建議。對於每一個問題,不僅以建議的方式從

正反兩面蛤出了被實踐證明為十分優秀的解決方案和非常精糕的解決方案,而且還分析了

問題產生的根源,猶如醍醐灌頂,讓人豁然開朗。

Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

全書-共12章,第1~ 3章針對Java語法本身提出了51條建議,例如覆寫變長方法

時應該注意哪些事項、final 修飾的常量不要在執行期修改、匿名類的建構函式特殊在什麼

地方等:第4~9章重點針對JDK API的使用提出了80條建議,例如字串的拼接方法該

如何選擇、列舉使用時有哪些注意事項、出現NullPointerException該如何處理、泛型的多

重界限該如何使用、多執行緒程式設計如何預防死鎖,等等r第10~ 12章針對程式效能、開源

的工具和框架、編碼風格和程式設計思想等方面提出了20條建議。

希望本文能讓你少走一些彎路

  • 您是否曾經為了提供一個"One Line"的解決方案而徹夜地檢視原始碼?現在您不用了。
  • 您是否曾經為了理解某個演算法而冥思苦想、閱覽群書?現在您不用了。
  • 您是否曾經為了提升0.1秒的效能而對N種實現方案進行嚴格測試和對比?現在您不用了。
  • 您是否曾經為了避免多執行緒死鎖問題而遍尋高手共同診治?現在您不用了。

那些所謂的架構師、設計師、專案經理、分析師們,已經有多長時間沒有寫過程式碼了?

程式碼是一切的基石,我不太信任連"Hello World"都沒有寫過的架構師。看看我們軟體界

的先輩們吧,Dennis M. Ritchie決定創造一門“看上去很好”的語言時,如果只是站在高

處吶喊,這門語言是劃時代的,它有多麼優秀,但不去實現,又有何用呢?沒有Dennis M.

Rithie的親自編碼實現,C語言不可能誕生,UNIX作業系統也不可能誕生。Linux 在聚攏

成千上萬的開源狂熱者對它進行開發和擴充套件之前,如果沒有Linus的編碼實現,僅憑他高聲

吶喊“我要創造一個劃時代的作業系統”,有用嗎?一切的一切都是以編碼實現為前提的,

程式碼是我們前進的基石。

廢話不多說直接把本書部分內容展示出來

目錄

第1章Java開發中通用的方法和準則/1

  • 建議1:不要在常量和變數中出現易混淆的字母/2
  • 建議2:莫讓常量蛻變成變數12
  • 建議3:三元操作符的型別務必一致/3
  • 建議4:避免帶有變長引數的方法過載14
  • 建議5:別讓null值和空值威脅到變長方法/6
  • 建議6:覆寫變長方法也循規蹈矩17
  • 建議7:警惕自增的陷阱/8
  • 建議8:不要讓舊語法困擾你/10
  • 建議9:少用靜態導人/11
  • 建議10:不要在本類中覆蓋靜態導人的變數和方法/13
  • 建議11:養成良好習慣,顯式宣告UID/14
  • 建議12:避免用序列化類在建構函式中為不變數賦值/17
  • 建議13:避免為final變數複雜賦值/19
  • 建議14:使用序列化類的私有方法巧妙解決部分屬性持久化問題/20
  • 建議15: break萬萬不可忘/23
  • 建議16:易變業務使用指令碼語言編寫/25
  • 建議17:慎用動態編譯/27
  • 建議18:避免instanceof非預期結果/29
  • 建議19:斷言絕對不是雞肋/31
  • 建議20:不要只替換一個類/33
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後掃碼即可免費獲取!

第2章基本型別 /35

  • 建議21:用偶判斷,不用奇判斷/36
  • 建議22:用整數型別處理貨幣/37
  • 建議23:不要讓型別默默轉換/38
  • 建議24:邊界,邊界,還是邊界/39
  • 建議25:不要讓四舍五人虧了一方/41
  • 建議26:提防包裝型別的null值/43
  • 建議27:謹慎包裝型別的大小比較/145
  • 建議28:優先使用整型池/46
  • 建議29:優先選擇基本型別148
  • 建議30:不要隨便設定隨機種子149
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後掃碼即可免費獲取!

第3章類、物件及方法152

  • 建議31:在介面中不要存在實現程式碼/53
  • 建議32:靜態變數- -定要先宣告後賦值/54
  • 建議33:不要覆寫靜態方法155
  • 建議34:建構函式儘量簡化157
  • 建議35:避免在建構函式中初始化其他類/58
  • 建議36:使用構造程式碼塊精煉程式/60
  • 建議37:構造程式碼塊會想你所想/61
  • 建議38:使用靜態內部類提高封裝性/63
  • 建議39:使用匿名類的建構函式/65
  • 建議40:置名類的建構函式很特殊/66
  • 建議41:讓多重繼承成為現實/68
  • 建議42:讓工具類不可例項化170
  • 建議43:避免物件的淺拷貝/71
  • 建議44:推薦使用序列化實現物件的拷貝/73
  • 建議45:覆寫equals方法時不要識別不出自己1/74
  • 建議46: equals 應該考慮null值情景176
  • 建議47:在equals中使用getClass進行型別判斷177
  • 建議48:覆寫equals方法必須覆寫hashCode方法178
  • 建議49:推薦覆寫toString方法/80
  • 建議50:使用package-info 類為包服務/81
  • 建議51:不要主動進行垃圾回收/82
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後掃碼即可免費獲取!

第4章字串/83

  • 建議52:推薦使用String直接量賦值/84
  • 建議53:注意方法中傳遞的引數要求/85
  • 建議54:正確使用String、StringBuffer. StringBuilder/86
  • 建議55:注意宇符串的位置/87
  • 建議56:自由選擇字元申拼接方法/88
  • 建議57:推薦在複雜字串操作中使用正規表示式/90
  • 建議58:強烈建議使用UTF編碼/92
  • 建議59;對字串排序持一種寬容的心態/94
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後掃碼即可免費獲取!

第5章陣列和集合 /97

  • 建議60:效能考慮,陣列是首選/98
  • 建議61:若有必要,使用變長陣列/99
  • 建議62:警惕陣列的淺拷貝/100
  • 建議63:在明確的場景下,為集合指定初始容量/101
  • 建議64:多種最值演算法,適時選擇/104
  • 建議65:避開基本型別陣列轉換列表陷阱/105
  • 建議66; asList 方法產生的List物件不可更改/107
  • 建議67:不同的列表選擇不同的遍歷方法/108
  • 建議68:頻繁插入和刪除時使用LinkedList/112
  • 建議69;列表相等只需關心元素資料/115
  • 建議70:子列表只是原列表的-一個檢視/117
  • 建議71:推薦使用subList處理區域性列表/119
  • 建議72:生成子列表後不要再操作原列表/120
  • 建議73:使用Comparator進行排序/122
  • 建議74:不推薦使用binarySearch對列表進行檢索/125
  • 建議75;集合中的元素必須做到compareTo和equals同步/127
  • 建議76:集合運算時使用更優雅的方式/129
  • 建議77;使用shufle打亂列表/131
  • 建議78;減少HashMap中元素的數量/132
  • 建議79;集合中的雜湊碼不要重複/135
  • 建議80;多執行緒使用Vector 或HashTable/139
  • 建議81:非穩定排序推薦使用List/141
  • 建議82:由點及面,一葉知秋一集 合大家族/143
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後掃碼即可免費獲取!

第6章列舉和註解 /145

  • 建議83:推薦使用列舉定義常量/146
  • 建議84:使用建構函式協助描述列舉項/149
  • 建議85:小心switch帶來的空值異常/150
  • 建議86;在switch的default 程式碼塊中增加AsserionError錯誤/152
  • 建議87:使用valueOf前必須進行校驗/152
  • 建議88:用列舉實現工廠方法模式更簡潔/155
  • 建議89:列舉項的數量限制在64個以內/157
  • 建議90:小心註解繼承/160
  • 建議91:列舉和註解結合使用威力更大/162
  • 建議92:注意@Override不同版本的區別/164
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後掃碼即可免費獲取!

第7章泛型和反射 /166

  • 建議93: Java的泛型是型別擦除的/167
  • 建議94:不能初始化泛型引數和陣列/169
  • 建議95:強制宣告泛型的實際型別/170
  • 建議96:不同的場景使用不同的泛型萬用字元/172
  • 建議97;警惕泛型是不能協變和逆變的/174
  • 建議98:建議採用的順序是List<T>、List<?>、 List<Object>/176
  • 建議99;嚴格限定泛型型別採用多重界限/177
  • 建議100:陣列的真實型別必須是泛型型別的子型別/179
  • 建議101:注意Class類的特殊性/181
  • 建議102:適時選擇getDeclaredXxx和getxx X/181
  • 建議103:反射訪問屬性或方法時將Acessible設定為true /182
  • 建議104:使用forName動態載入類檔案/184
  • 建議105:動態載入不適合陣列/186
  • 建議106;動態代理可以使代理模式更加靈活/188
  • 建議107:使用反射增加裝飾模式的普適性/190
  • 建議108:反射讓模板方法模式更強大/192
  • 建議109:不需要太多關注反射效率/194
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後掃碼即可免費獲取!

第8章異常/197

  • 建議110:提倡異常封裝/198
  • 建議111:採用異常鏈傳遞異常/200
  • 建議112:受檢異常儘可能轉化為非受檢異常/202
  • 建議113:不要在finally塊中處理返回值/204
  • 建議114:不要在建構函式中丟擲異常/207
  • 建議115;使用Throwable獲得棧資訊/210
  • 建議116:異常只為異常服務/212
  • 建議117:多使用異常,把效能問題放- -邊 /213
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後掃碼即可免費獲取!

第9章多執行緒和併發 /215

  • 建議118:不推薦覆寫start方法/216
  • 建議119:啟動執行緒前stop方法是不可靠的/218
  • 建議120:不使用stop方法停止執行緒/220
  • 建議121:執行緒優先順序只使用三個等級/224
  • 建議122:使用執行緒異常處理器提升系統可靠性/226
  • 建議123: volatile 不能保證資料同步1228
  • 建議124:非同步運算考慮使用Callable介面/232
  • 建議125:優先選擇執行緒池/233
  • 建議126:適時選擇不同的執行緒池來實現/237
  • 建議127: Lock與synchronized是不一樣的/240
  • 建議128:預防執行緒死鎖/245
  • 建議129:適當設定阻塞佇列長度/250
  • 建議130:使用CountDownLatch協調子執行緒/252
  • 建議131: CyclicBarrier 讓多執行緒齊步走/254
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後點選頭像主頁私信(學習)即可免費獲取!

第10章效能和效率 /256

  • 建議132:提升Java效能的基本方法/257
  • 建議133:若非必要,不要克隆物件/259
  • 建議134:推薦使用“望聞問切”的方式診斷效能/261
  • 建議135:必須定義效能衡量標準/263
  • 建議136:槍打出頭鳥一解決 首要系統效能問題/264
  • 建議137:調整JVM引數以提升效能/266
  • 建議138:效能是個大“咕咚”/268
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後點選頭像主頁私信(學習)即可免費獲取!

第11章開源世界/271

  • 建議139:大膽採用開源工具1/272
  • 建議140:推薦使用Guava擴充套件工具包1/273
  • 建議141: Apache護展包1/276
  • 建議142:推薦使用Joda日期時間擴充套件包/280
  • 建議143:可以選擇多種Collections擴充套件/282
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後點選頭像主頁私信(學習)即可免費獲取!

第12章思想為源/285

  • 建議144:提倡良好的程式碼風格/286
  • 建議145:不要完全依靠單元測試來發現問題/287
  • 建議146:讓註釋正確、清晰、簡潔/290
  • 建議147:讓介面的職責保持單一/294
  • 建議148:增強類的可替換性/295
  • 建議149:依賴抽象而不是實現/298
  • 建議150:拋棄7條不良的編碼習慣/299
  • 建議151:以技術員自律而不是工人/301
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議

 

因本章章節過多,就不給大家一一展示了,需要獲取這份《編寫高質量程式碼改善JAVA程式的151個建議》PDF的小夥伴可以轉發+關注後點選頭像主頁私信(學習)即可免費獲取!

 

相關文章