成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從靜態(tài)代碼分析工具的檢測(cè)規(guī)則學(xué)習(xí)代碼優(yōu)化技巧

開(kāi)發(fā) 后端
講起靜態(tài)代碼分析工具,估計(jì)大家耳熟能詳?shù)亩寄苤v出幾個(gè)來(lái),像PMD, Checkstyle, Findbug等。

講起靜態(tài)代碼分析工具,估計(jì)大家耳熟能詳?shù)亩寄苤v出幾個(gè)來(lái),像PMD, Checkstyle, Findbug等。沒(méi)錯(cuò)這些都是我們?nèi)粘>幋a代碼時(shí)用于提升我們代碼質(zhì)量的好工具,本文將從PMD工具實(shí)現(xiàn)的規(guī)則出發(fā),通過(guò)這些規(guī)則的定義來(lái)學(xué)習(xí)一下代碼優(yōu)化的技巧,希望通過(guò)這些技巧的介紹可以幫助大家在編碼過(guò)程中提升大家的代碼編寫(xiě)質(zhì)量。同時(shí)也算給大家介紹一個(gè)比較不錯(cuò)的途徑去學(xué)習(xí)改進(jìn)代碼編寫(xiě)質(zhì)量的方法。

下面都是從PMD規(guī)則中總結(jié)的一部分代碼優(yōu)化建議:

1.局部變量只被賦值一次可以聲明為final

說(shuō)明: 使用final標(biāo)識(shí)后,Java在編譯的時(shí)候會(huì)自動(dòng)把變化替換成常量,這樣程序的運(yùn)行效率就會(huì)提升

2.如果傳入長(zhǎng)度為1的字面意義參數(shù),這調(diào)用String.startsWith 可以使用 String.charAt(0) 方法節(jié)省運(yùn)行時(shí)間

說(shuō)明:關(guān)于這點(diǎn)比較好理解,String對(duì)象本身就是char數(shù)組,String.startsWith方法在內(nèi)部處理比較復(fù)雜,又有循環(huán)比較操作,所以效率遠(yuǎn)不及charAt操作。

“Abc”.startsWith(“A”) //bad

“Abc”.charAt(0) == ‘A’ //good

3.字符串拼接,使用StringBuffer,而不是直接使用”+”操作符進(jìn)行拼接

說(shuō)明: 關(guān)于這一點(diǎn),大家都有認(rèn)識(shí)。因?yàn)橹苯拥腟tring對(duì)象拼接,會(huì)產(chǎn)生新的String的對(duì)象進(jìn)行存儲(chǔ)。StringBuffer則會(huì)申請(qǐng)一個(gè)較大的內(nèi)存空間(char數(shù)組), 針對(duì)拼接,如果沒(méi)有超過(guò)char數(shù)組大小就直接追加到該數(shù)組尾部. 注意StringBuffer默認(rèn)大小是16個(gè)字符,所以建議大家使用時(shí)指定創(chuàng)建的數(shù)組大小。

4.String 的indexOf方法,如果參數(shù)單個(gè)字母,則使用char

Abc”.indexOf (“A”) //bad

Abc”.indexOf(‘A’) //good

說(shuō)明:String indexOf 方法,針對(duì)String和char的查找是使用了兩個(gè)方法,有興趣的同學(xué)可以看一下String的原代碼,查找String的方法要比查找char方法復(fù)雜,相對(duì)耗時(shí)

5.建議不要使用無(wú)參的StringBuffer構(gòu)造函數(shù)(該初始長(zhǎng)度為16個(gè)字符)

說(shuō)明: 大家可能對(duì)StringBuffer有一些誤解,認(rèn)為StringBuffer初始的空間比較大,但實(shí)際上其默認(rèn)創(chuàng)建的大小只是16個(gè)字符的數(shù)組,一旦超過(guò)后,需要新申請(qǐng)的數(shù)組空間,這個(gè)就會(huì)有額外的開(kāi)銷(xiāo)。

6.非線程安全的單例實(shí)現(xiàn) NonThreadSafeSingleton

下面代碼是單例實(shí)現(xiàn)中比較常見(jiàn)的一種

 

 

但這段代碼引入的一個(gè)問(wèn)題,就是在多線程方式下運(yùn)行,有可能會(huì)出復(fù)重新創(chuàng)建對(duì)象的問(wèn)題。解決辦法在getFoo方法上加上 synchronized關(guān)鍵字

7.同時(shí)需要覆寫(xiě) hashCode和equals方法

說(shuō)明:這個(gè)也是大家偶爾會(huì)忽視的一個(gè)問(wèn)題。hashCode和equlas方法最主要的用途是在基本Hash算法的集合類(lèi)中,如HashMap,等。

在HashMap實(shí)現(xiàn)中,其對(duì)一個(gè)對(duì)方是否相等的判斷邏輯如下:

 

 

也就是說(shuō)在HashMap中如果兩個(gè)對(duì)象相等必須是hashCode相等并且equals方法也返回相等。

那如果在一個(gè)對(duì)象中,只復(fù)寫(xiě)了equals,而未復(fù)寫(xiě)hashCode方法,就會(huì)造成”重復(fù)”的對(duì)象在HashSet中也會(huì)發(fā)生。

下面是一個(gè)有問(wèn)題的示例代碼:

 

 

8.BigDecimal對(duì)象初始化時(shí),針對(duì)浮點(diǎn)數(shù)據(jù)值使用String參數(shù)(針對(duì)精度問(wèn)題)

說(shuō)明:例如 new BigDecimal(0.1) 值真正的值可能是 .1000000000000000055511151231257827021181583404541015625

Good Luck!

Yours Matthew!

【編輯推薦】

  1. 何時(shí)創(chuàng)建Java對(duì)象實(shí)例
  2. Java多線程程序設(shè)計(jì)詳細(xì)解析
  3. Java在Client/Server中應(yīng)用
  4. Java多線程程序設(shè)計(jì)詳細(xì)解析
責(zé)任編輯:金賀 來(lái)源: 博客園
相關(guān)推薦

2021-06-08 13:56:34

工具靜態(tài)代碼

2024-09-14 11:23:19

2012-05-22 00:28:21

JavaJava開(kāi)源開(kāi)源工具

2023-05-11 07:42:04

doop漏洞

2012-07-23 10:22:15

Python性能優(yōu)化優(yōu)化技巧

2017-05-10 14:27:29

靜態(tài)代碼漏洞安全

2009-11-27 13:24:20

PHP代碼性能優(yōu)化

2013-04-08 10:47:42

Xcode靜態(tài)代碼分析

2011-08-02 10:13:30

Java工具

2023-09-14 22:57:52

2022-04-07 10:02:58

前端檢測(cè)工具

2024-01-08 13:47:00

代碼分析工具

2015-09-15 08:30:23

Android代碼優(yōu)化

2021-01-05 09:25:27

DockerSemgrep代碼靜態(tài)分析工具

2011-06-14 11:14:10

性能優(yōu)化代碼

2022-01-19 08:00:00

靜態(tài)代碼動(dòng)態(tài)代碼開(kāi)發(fā)

2021-03-29 23:05:36

程序員工具靜態(tài)分析

2020-12-07 14:46:07

程序員代碼分析工具

2022-11-24 10:34:05

CSS前端

2017-07-18 11:12:39

環(huán)境設(shè)置內(nèi)存分析Python
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品真实国产乱文在线 | 成人二区 | aaaa日韩 | 久久精品免费 | 欧美在线视频不卡 | 国产一区二区三区免费观看视频 | 欧美一区二区三区视频 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 天天草天天干天天 | 成人国产精品 | 久久国内 | 久久99精品久久 | 日韩免 | 欧美一级二级在线观看 | 日韩精品一区二区三区四区视频 | 午夜影院在线视频 | 亚洲一区电影 | 最新中文字幕在线 | 中文字幕一区二区三区四区不卡 | 国产精品一区二区视频 | 日韩精品一区二区三区视频播放 | 天天插天天操 | 久久精品久久久久久 | 国产乱一区二区三区视频 | 国偷自产av一区二区三区 | 欧美日韩国产精品一区 | 精品视频在线免费观看 | 日韩视频二区 | 欧美日韩黄色一级片 | 久久精品国产一区二区电影 | 青娱乐自拍 | 欧美亚州综合 | 激情a| 日韩2020狼一二三 | 国产不卡视频 | 成人小视频在线观看 | 日日碰碰 | 亚洲激情一区二区 | 欧美日韩专区 | 九九爱这里只有精品 | www.日韩系列 |