1. 程式人生 > >Effective Java總結的78條

Effective Java總結的78條

1、考慮用靜態工廠方法代替構造器

2、遇到多個構造器引數時要考慮用構造器

3、用私有構造器或者列舉型別強化Singleton屬性

4、通過私有構造器強化不可例項化的能力

5、避免建立不必要的物件

6、消除過期的物件引用

7、避免使用finalizer方法

8、重寫equals方法時遵守通用約定

9、重寫equals時總要重寫hashCode

10、始終要重寫toString

11、謹慎的重寫clone

12、考慮實現Comparable介面

13、使類和成員的可訪問性最小化

14、在共有類中使用訪問方法而非共有域

15、使可變性最小化

16、複合優先於繼承

17、要麼為繼承而設計,並提供文件說明,要麼就禁止繼承

18、介面優於抽象類

19、介面只用於定義型別

20、類層次優於標籤類

21、用函式物件表示策略

22、優先考慮靜態成員類

23、不要在程式碼中使用原生態型別

24、消除非受檢警告

25、集合優於陣列

26、優先考慮泛型

27、優先考慮泛型方法

28、利用有限制萬用字元來提升API的靈活性

29、優先考慮型別安全的異構容器

30、用enum代替int常量

31、用例項域代替序數

32、用EnumSet代替位域

33、用EnumMap代替序數索引

34、用介面模擬可伸縮的列舉

35、註解優先於命名模式

36、堅持使用Override註解

37、用標記介面定義型別

38、檢查引數的有效性

39、必要時進行保護性拷貝

40、謹慎設計方法簽名

41、慎用過載

42、慎用可變引數

43、返回長度為零的陣列或集合,而不是null

44、為所有匯出的API元素編寫文件註釋

45、將區域性變數的作用域最小化

46、for-each迴圈優先於傳統的for迴圈

47、瞭解和使用類庫

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

49、基本型別優先於裝箱基本型別

50、如果其他型別更適合,儘量避免使用字串

51、注意字串拼接是的效能問題

52、通過介面引用物件

53、介面優先於反射機制

54、謹慎的使用本地方法

55、謹慎的進行優化

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

57、只針對與異常的情況才使用異常

58、對可恢復的情況使用受檢異常,對程式設計錯誤使用執行時異常

59、避免不必要的使用受檢的異常

60、優先使用標準的異常

61、丟擲與抽象相對應的異常

62、每個方法丟擲的異常都要有文件

63、在細節訊息中包含能捕獲失敗的資訊

64、努力使失敗保持原子性

65、不要忽略異常

66、同步訪問共享的可變資料

67、避免過度同步

68、executor和task優先於執行緒

69、併發工具優先於wait和notify

70、執行緒安全性的文件化

71、慎用延遲初始化

72、不要依賴於執行緒排程器

73、避免使用執行緒組

74、謹慎的實現Serializable介面

75、考慮使用自定義的序列化形式

76、保護性的編寫readObject方法

77、對例項控制,列舉型別優先於readResolve

78、考慮用序列化代理代替序列化例項