<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 156,  comments - 601,  trackbacks - 0

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

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

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

    說明: 使用final標識后,Java在編譯的時候會自動把變化替換成常量,這樣程序的運行效率就會提升

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

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

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

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

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

    說明: 關于這一點,大家都有認識。因為直接的String對象拼接,會產(chǎn)生新的String的對象進行存儲。StringBuffer則會申請一個較大的內存空間(char數(shù)組), 針對拼接,如果沒有超過char數(shù)組大小就直接追加到該數(shù)組尾部. 注意StringBuffer默認大小是16個字符,所以建議大家使用時指定創(chuàng)建的數(shù)組大小。

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

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

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

    說明:String indexOf 方法,針對Stringchar的查找是使用了兩個方法,有興趣的同學可以看一下String的原代碼,查找String的方法要比查找char方法復雜,相對耗時

    5.建議不要使用無參的StringBuffer構造函數(shù)(該初始長度為16個字符)

    說明: 大家可能對StringBuffer有一些誤解,認為StringBuffer初始的空間比較大,但實際上其默認創(chuàng)建的大小只是16個字符的數(shù)組,一旦超過后,需要新申請的數(shù)組空間,這個就會有額外的開銷。

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

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


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

    7.同時需要覆寫 hashCodeequals方法

    說明:這個也是大家偶爾會忽視的一個問題。hashCodeequlas方法最主要的用途是在基本Hash算法的集合類中,如HashMap,等。

    HashMap實現(xiàn)中,其對一個對方是否相等的判斷邏輯如下:


    也就是說在HashMap中如果兩個對象相等必須是hashCode相等并且equals方法也返回相等。

    那如果在一個對象中,只復寫了equals,而未復寫hashCode方法,就會造成重復的對象在HashSet中也會發(fā)生。

    下面是一個有問題的示例代碼:


    8.BigDecimal對象初始化時,針對浮點數(shù)據(jù)值使用String參數(shù)(針對精度問題)

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


    Good Luck!
    Yours Matthew!
    posted on 2011-04-29 10:54 x.matthew 閱讀(2364) 評論(2)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 日本道免费精品一区二区| 黄色一级免费网站| 亚洲国产精品免费视频| 亚洲一区二区精品视频| 丰满少妇作爱视频免费观看| 亚洲成a人片在线观看老师| 草久免费在线观看网站| 亚洲精品无码专区久久同性男| 免费的黄网站男人的天堂| 亚洲精品国产自在久久| 未满十八私人高清免费影院| 久久亚洲中文字幕精品一区四| 国产日韩在线视频免费播放| 亚洲中文字幕久久精品无码APP | 国产中文字幕在线免费观看| 久久久久亚洲?V成人无码| 男女一边摸一边做爽的免费视频| 伊人久久大香线蕉亚洲五月天| 天堂在线免费观看| 亚洲综合久久综合激情久久| 99久久免费中文字幕精品| 67194在线午夜亚洲| 日韩精品视频免费在线观看| 亚洲av综合日韩| 亚洲 自拍 另类小说综合图区| 怡红院免费全部视频在线视频| 亚洲国产日韩在线一区| 国产精品黄页在线播放免费| 国产乱子伦精品免费视频| 亚洲视频在线一区二区三区| 好爽…又高潮了免费毛片| 午夜不卡AV免费| 亚洲精品电影在线| 国产小视频免费观看| 热99RE久久精品这里都是精品免费| 亚洲综合久久成人69| 无码不卡亚洲成?人片| 久久精品无码专区免费东京热| 亚洲欧美日韩中文无线码| 亚洲乱亚洲乱妇无码麻豆| 91精品免费国产高清在线|