第3,6,7,10章讀書筆記

第三章函數

3.1 短小

函數的最重要的原則說三遍:短小、短小、短小。

if,else,while等語句,代碼塊應該儘量只有一行,且此行是一個函數調用語句。函數名應該具有說明性,增加文檔的價值。

例:JDK源碼:

private static inthugeCapacity(int minCapacity) {
        if (minCapacity < 0) //overflow
            throw newOutOfMemoryError();//此處可以猜測是拋出內存益出相關錯誤。
        return (minCapacity > MAX_ARRAY_SIZE)? Integer.MAX_VALUE :MAX_ARRAY_SIZE;
}


3.2 只做一件事

函數應該只做一件事。判別方法:是否可以再拆分出一個函數。

3.3 每個函數一個抽象級別。

函數的語句都要在同一抽象層次級別上。例如經典的MVC模型,就是一種抽象級別分離的方法。

自定鄉下讀代碼:向下規則

讀程序方法:程序就像一系列TO起頭的段落,每一段都描述當前的抽象級別,並引用下一層的抽象級別的段落。

3.4switch語句

抽象工廠設計模式。

3.5 使用描述性的名稱

別害怕長名稱。具有描述性的名稱比段而小令人費解的名稱好。

例 c = a*b 應改爲result = multiplicand *multiplier,增加可讀性。

命名方式要保持一致。

3.6 函數參數

函數參數越少越好,最理想是沒有參數,儘量避免三個參數。參數少有利於測試。

ArrayList源碼中的方法基本都是不多於一個參數


   如果參數需要二個或者三個以上,可以將其中一些參數封裝成類。

比較:

Circle  make Circle(double x,double y, doubleradius);
Circle  makeCircle(Point center, double radius);


3.8分隔指令與詢問

函數要麼做什麼事,要麼回答什麼事。

3.9.1 抽離try /catch代碼塊

將try/catch代碼塊的主體部分抽離出來,另外形成函數。


3.10 別重複自己

3.11結構化編程

Dijkstra規則:每個函數,函數中的代碼塊應有一個入口,一個出口。且只有一個return語句,循環中不能有break,continue語句,永遠不用goto語句。

小結

函數是語言的動詞,類是名詞。

第六章函數

6.2數據對象的反對稱性

過程式代碼便於在不改動既有數據結構的前提下添加新函數。

面向對象代碼便於在不改動既有函數的前提下添加新類。

6.3得濹忒耳律

模塊不應瞭解他所操作對象的內部情形。

第七章錯誤處理

錯誤處理不應搞亂代碼邏輯。

7.1使用異常而非返回碼

預見異常時,不應出現 print(“xxy異常”)活者return null這種形式

應採用拋出異常的方式

Ex:

private void rangeCheck(int index) {
       if (index >= size)
           throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}

7.7 別返回null值

7.8 別傳遞null值

 

第十章 類

10.1 類的組織

Java約定,類應從一組變量列表開始。如果有公共靜態常量,應該先出現。然後是靜態私有變量,以及私有實體變量.很少會有公共變量。

10,2 類應該短小

類的名稱應當描述其權責。

單一權責原則:類或者模塊應有且只有一條加以修改的理由。

類應該只有少量實體變量。

每個變量被每個方法所使用,稱該類具有最大的內聚性。

10.3 爲了修改而組織

對於多數系統,修改一直持續。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章