《Effective Java》是提升編碼技巧的必備書籍,但是并沒有囊括所有的技巧,本文補充一些工作中經(jīng)常用到的編碼技巧
最佳實踐
不要使用FileReader和FileWriter
FileReader和FileWriter無法指定編碼方式,容易收到環(huán)境的影響,建議使用
try (InputStreamReader reader = new InputStreamReader(new FileInputStream("fileName"), StandardCharsets.UTF_8)) {
// do something
int i = 0;
}
不要使用魔法值
使用常量替換魔法值
private static final int SUCCESS = 200;
public static boolean isSuccess(int code) {
return code == SUCCESS;
}
不要用Exception捕捉所有異常
捕捉可檢異常,防止無意識的捕捉了RuntimeException
線程池不允許使用Executors去創(chuàng)建
阿里巴巴規(guī)范
線程池不允許使用Executors去創(chuàng)建,而是通過ThreadPoolExecutor的方式,這樣的處理方式讓寫的同學(xué)更加明確線程池的運行規(guī)則,規(guī)避資源耗盡的風(fēng)險。
使用Integer.parseInt
使用Integer.parseInt而不是Integer.valueOf,相同的也是使用Long.parseLong而不是Long.valueOf。
parseXXX減少自動裝箱和拆箱的次數(shù),性能更高。
避免使用不安全的加密方式
避免使用MD5,SHA1摘要算法,避免使用DES對稱加密。這些加密算法已經(jīng)被破解或者通過彩虹表的方式間接破解了,存在安全隱患
使用StandardCharset.UTF_8
讀寫字符流在指定UTF-8編碼時,有很多種方式,其中StandardCharset.UTF_8由JDK提供,依賴性最低
使用SecureRandom
- SecureRandom比Random隨機性強很多,使用了128位來生成隨機數(shù),Random只使用了48位。
- Random使用時間作為種子或生成種子,比較容易被破解;SecureRandom使用操作系統(tǒng)提供的隨機數(shù)作為種子,比如
/dev/random或/dev/urandom
Random random = new SecureRandom(SecureRandom.getSeed(4));
使用%n而不是\n
%n可以產(chǎn)生平臺特定的換行符,兼容性更好