1. 程式人生 > >再讀《Java程式設計思想 》

再讀《Java程式設計思想 》

     前段時間在豆瓣上無意間看到一個帖子“我為什麼把thinking in java 讀了10遍”,是11年的帖子,下面評論至今,各種聲音都有,不過大多數還是佩服和支援的。我個人來講也是非常支援的,而且也打算再讀《Thinking in Java》,上學那會老師再三強調:“讀書百遍,其義自見!”,但是對於程式猿,不光要讀,而且要實踐。

一、為什麼要再讀

    上一篇,我曾經說過,如何在Java界立足,憑藉的就兩點:

    1、基本功,包括:Java基本知識,(Java程式設計思想、Effective Java),Java進階(Java虛擬機器、Java設計模式)、網路相關(這個時代沒有網路就沒有一切,Java網路程式設計、HTTP權威指南、TCP/IP協議),計算機系統相關(編譯原理、深入理解計算機系統等)這些都是根本,所謂萬變不離其宗,在掌握這些基本功的基礎上,再學習新技術,面對日新月異的新技術時就會遊刃有餘。

    2、將瑣碎知識串聯起來的能力,也就是歸納總結能力。無論是在工作中還是學習中,起初用到的知識是東一塊、西一塊,其實許多東西都是關聯的,通過系統的梳理形成自己的知識體系,打造屬於自己的專屬領域,這也是在Java界立足的根本。

    對於很多程式猿來說,或許都有體會,一本程式設計類的書,特別是像《Thinking in Java》這樣闡釋內部原理的書讀一遍是不行的;在程式設計一段時間之後(遇到各種問題)再讀此書,有些問題就會豁然開朗,比如“==”和“equals”的區別、為什麼覆蓋equals時總要覆蓋hashCode、為什麼向上轉型是自動的向下轉型卻需要Cast,為什麼要使用Enum類代替常量,等等這些問題,在讀此書後都會找到答案。借用此書緒論中的話:

Like any human language, Java provides a way to express concepts. If successful, this medium of expression will be significantly easier and more flexible than the alternatives as problems grow larger and more complex.
You can’t look at Java as just a collection of features—some of the features make no sense in isolation. You can use the sum of the parts only if you are thinking about

design, not simply coding. And to understand Java in this way, you must understand the problems with the language and with programming in general. This book discusses programming problems, why they are problems, and the approach Java has taken to solve them. Thus, the set of features that I explain in each chapter are based on the way I see a particular type of problem being solved with the language. In this way I hope to move you, a little at a time, to the point
where the Java mindset becomes your native tongue.Throughout, I’ll be taking the attitude that you want to build a model in your head that allows you to develop a deep understanding of the language; if you encounter a puzzle, you’ll feed it to your model and deduce the answer.

書中所有的概念或者模式的建立都是為了解決特定問題的,如果理解了這些,就能夠高效、快速的使用Java。

二、怎麼樣讀

     1、實踐

    書讀完之後貴在實踐,不要“眼高手低”,特別是對於咱們程式猿來說,實踐是檢驗真理的唯一標準,這句話非常恰當。書只是對程式碼的一個解讀,唯有編碼才能檢驗其是否正確。要把學到的都一點一點用到專案中去,例如要用Enum類代替常量

替換之前:

public static final String AUDIT_WAIT = "稽核中";
public static final String AUCTIONING = "競買中";
public static final String ENDAUCTION = "競買已結束";
public static final String AUCTION_WAIT = "等待競買";

替換之後:

public enum BidProductStatus{
		AUDIT_WAIT("稽核中"), AUCTIONING("競買中"), ENDAUCTION("競買已結束"), AUCTION_WAIT("等待競買");

		public String getDesc() {
			return desc;
		}

		public void setDesc(String desc) {
			this.desc = desc;
		}

		private String desc;
		BidProductStatus(String s) {
			desc = s;
		}
	}

     2、讀原始碼

    有一句話,程式猿們應該都知道“Read The Fucking Source Code”,簡稱“RTFSC”,就是讀原始碼。想知道其內部原理嗎,那你就讀原始碼吧,別無辦法!就像Spring,為什麼那麼牛逼,一個功能,一個配置檔案或者一個註解就搞定了,怎麼做到的,去讀原始碼吧!你會發現,經典的開源框架將Java運用到了極致,而且你還會學到設計模式。我的《Spring應用》專欄就是在讀Spring原始碼的基礎上完成的,而且我還要反覆去研讀。

三、總結

一個簡單的工作反覆的做,你就成了“專家”!此次為再讀、後面或許還會有再在讀、或許會讀十遍呢,誰知道呢。以上純屬個人觀點,在此記錄、以茲鼓勵!