JAVA--養成好的編程習慣

原文地址:http://user.qzone.qq.com/1159340782/2java

略微犧牲一些性能,換來更好的可讀性和可維護性是好的選擇。如下不提倡和提倡的寫法僅供參考。正則表達式

代碼中不提倡的寫法數據庫

序號apache

不提倡的寫法api

緣由數組

1緩存

儘可能避免隨意使用靜態變量工具

靜態變量和類同步,類不卸載,對象將常駐內存,直到程序終止性能

2ui

儘可能避免過多過常的建立java對象

花費時間去建立對象,回收對象也是一種開銷,儘可能複用對象,用基本數據類型或數組代替對象。

3

儘可能避免使用finalize方法

致使GC負擔更大,程序效率更差

4

儘可能避免變量的重複計算

如遍歷數組的長度,一次計算便可

5

儘可能避免沒必要要的建立

程序邏輯控制對象的建立

6

儘可能避免使用二維數組

二維數組佔用空間比一維數組多得多,大概10倍

7

儘可能避免使用split

Split因爲支持正則表達式,效率低,消耗大量資源,建議使用apache下的StringUtils.split頻繁split緩存結果

8

儘可能避免很是大的內存分配

內存連續,浪費資源

9

慎用異常

建立異常開銷大,好在try-catch開銷不大

10

儘可能減小IO操做

IO消耗系統資源,儘可能使用緩存

11

儘可能避免不須要的instanceof操做

always true

12

儘可能避免不須要的造型操做

--

13

對於boolean避免沒必要要的等式

Flag == true

 

 

 

 

 

代碼中提倡的寫法

序號

提倡的寫法

緣由

1

儘可能在合適的場合使用單例

減輕加載的負擔,縮短加載的時間,提升加載的效率

2

儘可能使用final修飾符

尋找內聯全部final方法,性能提升50%

3

儘可能使用局部變量

實例變量和靜態變量等都在堆中創建,速度慢,局部變量放在棧中,速度快

4

處理好包裝類型和基本類型使用場景

包裝類型屬於對象在堆中建立,基本類型在棧中建立,有對象方面須要處理適用包裝類型,其餘提倡基本類型

5

慎用synchronized儘可能減少synchronized方法

實現同步系統開銷大,容易死鎖。儘可能適用方法同步代替代碼塊同步

6

儘可能使用StringBuffer和StringBuilder進行字符串的拼接

儘可能初始化StringBuffer和StringBuilder的長度,字符數組動態添加字符串

7

儘可能用基本數據類型代替對象

如String str = 「hello」 String str = new String(「hello」); 後者還建立了一個字符數組

8

單線程儘可能使用HashMap ArrayList

HashTable Vector等使用了同步機制,下降了性能

9

儘可能合理的使用HashMap

多使用HashMap的構造方法,初始化它的大小,擴容是一件很耗費性能的事情

10

儘可能在finally塊中釋放資源

避免資源泄漏

11

儘可能使用位運算取代a/b,a*b操做

/是一個代價很高的操做

12

儘可能早釋放無用的對象

Obj =null

13

合理使用arrayList和linkedList

一個是線性表(查詢),一個是鏈表(添加和刪除),

14

儘可能使用System.arraycope複製數組

比循環複製數組要快得多

15

儘可能緩存常常使用的對象

HashMap,WeekHashMap或者第三方的工具EhCache OsCache Memcached

16

大對象儘可能用clone()不用new

new建立對象成本大

17

儘量地使用java自身提供的api

不解釋

18

使用快速度的jdbc驅動

數據庫鏈接池

19

緩存DataSorce

爲了再次的JNDI調用,能夠系統中緩存要使用的DataSorce

20

讓訪問實例內變量的setget方法變成final

可變成inlined

21

charat代替startswith

--

22

若是隻有一個字符的’’代替」」

--

23

常量字符串,用String代替StringBuffer

減少運行開銷提升性能

24

Stringtokenizer代替indexof substring

Stringtokenizer分析字符串更容易,效率也會高一些

25

使用三目運算代替if-return else

--

相關文章
相關標籤/搜索