EffectiveJava_12-05-2018

40、謹慎設計方法的簽名

1、謹慎地選擇方法的名稱。

2、不要過於追求提供便利的方法,每個方法應該盡其所能。

3、避免過長的參數列表

        1.把方法分解成多個

        2.創建輔助類,用來保存參數的分組

        3.Builder模式

41、慎用重載

import java.math.BigInteger;
import java.util.*;
public class CollectionClassifier {
    public static String classify(Set<?> s){
        return "set";
    }
    public static String classify(List<?> list){
        return "list";
    }
    public static String classify(Collection<?> collection){
        return "Unknow collection";
    }
    public static void main(String[] args) {
        Collection<?>[] collections = {
                new HashSet<String>(),
                new ArrayList<BigInteger>(),
                new HashMap<String,String>().values()
        };
        for (Collection collection:collections) {
            System.out.println(classify(collection));
        }
    }
}

output:

Unknow collection
Unknow collection
Unknow collection

classify方法被重載了,而要調用哪個重載方法是在編譯時決定的。

對於重載方法的選擇是靜態的,而對於被覆蓋方法的選擇是動態的。

42、慎用可變參數

43、返回零長度的數組或者集合,而不是NULL

44、爲所有導出的API元素編寫文檔註釋

45、將局部變量的作用於最小化

可以增強代碼的可讀性和可維護性,降低代碼出錯的可能性。

46、for-each優先於for循環

Arrays.asList的用法:

使用工具類Arrays.asList()把數組轉換成集合時,不能使用其修改集合相關的方法,它的add/remove/clear方法會拋出UnsupportOperationException異常
說明:asList的返回對象是一個Arrays內部類,並沒有實現集合的修改方法。Arrays.asList體現的是適配器模式,只是轉換接口,後臺的數據仍是數組。

47、瞭解和使用類庫

48、如果需要精確的答案,請避免使用float,double。

49、基本類型優於裝箱基本類型

基本類型:int,double,引用類型(String,List)。

每個基本類型都有一個對應的引用類型,乘坐裝箱基本類型,如Integer,Double,Boolean。

區別:

一:基本類型只有值,而裝箱基本類型則具有與它們的值不同的同一性。

二:基本類型只有功能完備的值,二每個裝箱基本類型除了它對應基本類型的所有功能值之外,還有個非功能值:null。

三:基本類型更節省時間和空間。、

50、如果其他類型更合適,則儘量避免使用字符串。

51、當心字符串連接的性能

52、通過接口引用對象

如果有合適的接口類型存在,那麼對於參數,返回值,變量和域來說,就都應該使用接口類型進行聲明。

域:所謂的域,翻譯成英文就是field, 也就是我們常說的字段,或者說是屬性。 比如類的字段(屬性),局部的,全局的。所謂域,其實是“field”的翻譯

實例域:
比如:
class A{
public static void main(String[] args)
{
A a = new A();
//a是個實例,那麼這個實例的作用域就是“實例域"
}
}

然後實例域,就是 實例("object" )的"field"。包括實例域和靜態域,靜態域又叫類域。

只有當你利用構造器創建某個對象的時候,才真正需要引用這個對象的類。

如果你養成了用接口作爲類型的習慣,你的程序將會更加靈活。當你決定更換實現時,所要做的就只是改變構造器中的類的名稱。

53、接口優先於反射機制。

核心反射機制(java.lang.reflect),提供了“通過程序來訪問關於已裝載的類的信息”的能力。

54、謹慎的使用本地方法

55、謹慎地進行優化

56、遵守普遍接受的命名慣例

 

 

 

 

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