Java開發小技巧(一)
前言
相信許多程式設計師在看別人寫的程式碼的時候,會有懷疑人生的感想,面對一堆天書一樣的程式碼,很難摸清作者的思路,最後選擇了重構,如果你認同上面這個作法,說明了兩個問題:要麼原來的開發者技術菜、要麼你技術菜。
企業級專案的開發不是一個開發人員就能完成的,開發過程中往往會有一些需求變更、人員調動,所以程式碼的編寫規範非常非常重要,你要確保專案交接後,後續開發人員可以看懂你的東西,知道如何進行後期的維護和功能迭代。
最近在看公司專案原始碼(Java)的時候,發現專案的結構非常清晰,後期維護非常便捷,原因就是運用了很多巧妙的開發技巧,在這裡也和大家分享一下,希望對你們有幫助。
1.IP地址變數化
相信大家在連線資料庫的時候是這樣寫的:
這是連線本地MySql資料庫的字串,這句話看起來沒有問題,但是大多數企業專案會把資料庫獨立出來,使用資料庫一體機或遠端資料庫,這時候就需要修改上面的IP了,如果專案少這樣寫沒什麼問題,但是如果專案多了,豈不是每個專案都要去修改,這樣顯得非常不智慧,所以解決方案來了:
使用hosts檔案使IP地址變數化
首先介紹一下hosts檔案,它的作用就是將一些網址域名與其對應的IP地址建立一個關聯,相當於本地的DNS域名解析器,當使用者訪問一個網址時,系統會首先從hosts檔案中尋找對應的IP地址,一旦找到,系統會立即訪問對應的IP,如果沒有找到,則系統再會將網址提交DNS域名解析伺服器進行IP地址的解析。
Windows中hosts檔案位於
C:\Windows\System32\drivers\etc\hosts
,Linux中位於/etc/hosts
現在我們把資料庫連線字串改成這樣子:
與之前的不同之處在於,將127.0.0.1
的IP地址改成了變數名mydb
接著我們來修改hosts檔案,開啟hosts檔案其實你可以看到,平時我們使用的localhost
其實是預設解析到IP127.0.0.1
上的,我們可以在檔案最下面新增這樣一行配置:
127.0.0.1 mydb
大功告成,執行專案你會發現一切正常,這就是將IP地址變數化的方法,如果之後公司要求將資料庫遷移到其它地方,只需修改一下伺服器的hosts檔案即可,伺服器上面所有的專案就能正常連線資料庫了,是不是很方便呢
2.配置檔案式開發
在我們的開發中經常會有一些需要預先定義好的變數或者常量,比如資料庫連線配置、Sql語句等等,如果把它們寫死在程式碼裡面,會顯得很不靈活,因為Java是一種編譯型開發語言,修改程式碼需要重新編譯和部署,於是我們可以使用這種方法——將變數存放到配置檔案中。
這樣如果我們修改了變數內容,也不需要重新編譯,像Spring、Mybatis等大多是Java框架都是利用這種方式來工作的。
下面舉一個簡單的例子:
首先我們新建一個config.properties
的配置檔案:
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://mydb:3306/test?characterEncoding=utf8&useSSL=true&serverTimezone=UTC
db.username=root
db.password=toor
這是一個簡單的資料庫連線配置檔案,然後我們在程式碼中載入這個檔案:
File file = new File("config.properties");
if(!file.exists() && file.isDirectory()){
throw new FileNotFoundException("缺少配置檔案config.properties");
}
Properties prop = new Properties();
FileInputStream in = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(in, "UTF-8"); //解決檔案編碼問題
prop.load(reader); //載入配置內容到prop物件中
這樣我們就可以通過Properties提供的方法來獲取相應的配置了,如:
String url = prop.getProperty("db.url");
載入配置檔案還有一種方式:
InputStream in = getClass().getResourceAsStream("config.properties");
prop.load(in);
這是通過classpath來獲取配置檔案,但是要求配置檔案必須放在classpath中,而且需要注意的是,如果你將專案打包成jar包,配置檔案也會被一起打包,沒辦法對檔案進行修改了。
使用Properties prop = System.getProperties();
還可以獲取JVM的一些配置,比如系統換行符等資訊,在讀取解析本地檔案內容時是很有用:System.getProperty("line.separator")
3.其它技巧
(1) 使用System.getProperty("line.separator")
獲取系統換行符,Windows上為\r\n
,Linux為\n
(2) 避免使用硬編碼,使用常量存放固定值,且常量名全部大寫,如:private static final VALUE = "123";
(3) 使用"123".equals(value)
方式進行等值判斷,而不用value.equals("123")
,防止value為Null出現NullPointerException
(4) 多字串拼接時,使用StringBuffer
(執行緒安全)或StringBuilder
(非執行緒安全)代替str1 + str2
的情況
(5) 使用obj.valueOf()
的方式轉換基本型別,避免使用強制轉換
(6) 使用return result.size() > 0
的方式優化if
條件判斷
(7) 使用靜態程式碼塊初始化靜態成員
(8) 使用整型處理金融資料,將浮點值轉為整型進行計算,避免浮點值的精度偏差
(9) 使用Collection
型別時,採用Map<String, Object> map = new HashMap<String, Object>();
或List<String> list = new ArrayList<String>();
的標準形式,不要省略兩邊的泛型定義
(10) 使用分隔符拼接字串時,用str = str.substring(0, str.lastIndexOf(","));
的方式刪除末尾多餘的分隔符
寫在最後
下一篇文章將給大家分享一個很實用的方法:利用Maven打造一個通用的工程,可以把一些通用的配置資訊、類、方法進行統一管理,並且為其它工程提供服務,敬請期待喲
本文為作者kMacro原創,轉載請註明來源:http://www.jianshu.com/p/830cad891984。
相關文章
- 開發提效小技巧分享(一)
- Flutter 開發小技巧Flutter
- Vue開發小技巧Vue
- 開發小技巧-mockMock
- iOS 開發小技巧iOS
- 提高開發銷量小技巧
- 提高開發效率小技巧
- React開發的小技巧React
- iOS開發小技巧合集iOS
- 小程式開發技巧總結
- 安卓開發的小技巧(2)安卓
- 安卓開發的小技巧(1)安卓
- 安卓開發的小技巧(3)安卓
- React-native 開發小技巧React
- Python 專案開發小技巧Python
- Kotlin Android 開發小技巧KotlinAndroid
- Swift開發的幾個小技巧Swift
- Android開發一點小技巧和建議獻上Android
- Java 8 開發頂級技巧Java
- 我開發中總結的小技巧
- 好程式設計師Java分享Java開發常用規範技巧一程式設計師Java
- 為JavaScript開發人員準備的 21 個小技巧(一)JavaScript
- 你需要知道的小程式開發技巧
- iOS 開發的9個超有用小技巧iOS
- Android開發的那些坑和小技巧Android
- 【進階篇】Java 實際開發中積累的幾個小技巧(二)Java
- iOS 基礎開發技巧 (一)iOS
- iOS開發—技巧總結(一)iOS
- JavaScript開發技巧必備【一】JavaScript
- Java 8的五大開發技巧Java
- 五個 goland 進行 go 開發的小技巧GoLand
- js開發實戰優化小技巧001JS優化
- iOS開發常用小技巧記錄(持續更新)iOS
- 提高python開發效率的10個小技巧Python
- Delphi三層開發小技巧:TClientDataSet的Delta妙用client
- 轉Java開發 Java 小寫轉大寫Java
- Java後端高階開發面試技巧解析Java後端面試
- Java 8開發的4大頂級技巧Java