java中的codereview
生活随笔
收集整理的這篇文章主要介紹了
java中的codereview
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
關(guān)于codereview,在平時的開發(fā)中,經(jīng)常忽略的環(huán)節(jié),參照目前介紹寫好代碼的幾本書和之前掉進(jìn)的坑,做了一個總結(jié),分享出來。
為什么要做
- 通過review規(guī)避一些代碼層面的問題
- 提升可讀性,方便后續(xù)擴展和維護(hù)
- double check 確保代碼質(zhì)量
檢查列表
注釋
- 寫有意義的注釋
- DO屬性上,名字無法識別業(yè)務(wù)含義的,加注釋
- service接口和manager接口,注明方法的說明
- 代碼塊中的復(fù)雜邏輯,添加注釋
風(fēng)格
- 域名不要寫死
- 不同環(huán)境下差異的,注意使用配置項
日志
- 合理分配日志級別,warn和error要分開
- 日志中,異常信息要記錄,第一個參數(shù)簡短說明,第二個異常信息
- 日志異常注意把相關(guān)的參數(shù)信息記錄下來,例如userId等
- 異常拋日志的情況下,主要不要引入二次異常
- 配置參數(shù)
線程安全
- 需要被多個線程訪問的對象是否線程安全,檢查有無通過同步方法保護(hù)
- 在保證線程安全的同時,要注意避免過度使用同步,導(dǎo)致性能降低
- 不用使用Java原生的線程處理方法,推薦使用JUC框架中的類
- 根據(jù)場景選擇不用的線程池來實現(xiàn),會用簡化版Executors,理解處理過程
異常處理
- 不要直接e.printStackTrace,用Logger記錄下來
- 異常捕獲之后,要做響應(yīng)的處理,返回錯誤提示或者記錄日志,切忌啥都不做
- 當(dāng)前程序中能夠處理的異常,捕獲即可,無法處理的,拋出
- 異常只為異常服務(wù),不要摻雜業(yè)務(wù)邏輯到異常中
性能
- 避免多重的RPC或者網(wǎng)絡(luò)IO的循環(huán),盡量批處理
- 避免無窮循環(huán),要有終止條件判斷
- 不要主動進(jìn)行垃圾回收,代碼中不要有System.gc()
- String的split方法不要用,用開源包中的StringUtil工具類
- 字符串的拼接,使用StringBuilder和StringBuffer
代碼邏輯
- 不要在finally中return(try中的返回值,屏蔽異常)
- volatile不具有原子性,劃分好synchronized的粒度問題
- 推薦使用Guava作為工具處理類
- 推薦joda來處理時間,然后SimpleDateFormat是非線程安全的
- 單個方法超過50行,要做抽取,否則無法保證可讀性
- 方法入?yún)⒊^5個,抽取到QueryTO中進(jìn)行處理
- for或if的層級嵌套,不要超過4層
- if的邏輯判斷中,多個||和&&的組合,注意拆分處理
- case語句后面,需要加break
- if后面,記得寫大括號
- 文件資源,訪問后,記得close掉
- 排序優(yōu)先使用Comparator,一個類的擴展排序工具
- 使用addAll、retainAll、removeAll優(yōu)雅實現(xiàn)并集、交集、差集
- List的remove,使用迭代器來進(jìn)行刪除
事務(wù)處理
- 多表同時更新操作,需要事務(wù)包裹,并驗證過
- 批量插入,使用iBatis的batchInsert特性,需要在事務(wù)下才生效,可以通過wireshark查看網(wǎng)絡(luò)情況
- 分布式場景下,可以使用消息中間件來保證最終一致性
- 聲明式事務(wù)注解標(biāo)簽,盡量在manager層搞掉,不要搞到service層或者web層
- 一些可能出現(xiàn)重復(fù)處理的方法,記得做冪等操作
重復(fù)代碼
- don’t repeat yourself
- 同樣的業(yè)務(wù)邏輯處理,不要有兩份代碼
安全問題
XSS
- cookie設(shè)置httponly屬性
- jsonp輸入輸出檢查
CSRF
- 服務(wù)端增加CSRF校驗,增加token
- 必要的驗證碼
水平權(quán)限
- 不用用戶之間的不能相互操作
標(biāo)準(zhǔn)
- 代碼整潔
- 可讀性好
- 可維護(hù)性高
- 性能優(yōu)
本文轉(zhuǎn)自:http://iamzhongyong.iteye.com/blog/2149463
轉(zhuǎn)載于:https://www.cnblogs.com/nizuimeiabc1/p/4254119.html
總結(jié)
以上是生活随笔為你收集整理的java中的codereview的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 参加古镇LED展需要购买门票吗?有没有好
- 下一篇: 我的2015年读书计划,每两周读完一本书