最近在看公司項目源碼(Java)的時候,發現項目的結構非常清晰,後期維護非常便捷,原因就是運用了很多巧妙的開發技巧,在這裡也和大家分享一下,希望對你們有幫助。 ...
前言
相信許多程式員在看別人寫的代碼的時候,會有懷疑人生的感想,面對一堆天書一樣的代碼,很難摸清作者的思路,最後選擇了重構,如果你認同上面這個作法,說明瞭兩個問題:要麼原來的開發者技術菜、要麼你技術菜。
企業級項目的開發不是一個開發人員就能完成的,開發過程中往往會有一些需求變更、人員調動,所以代碼的編寫規範非常非常重要,你要確保項目交接後,後續開發人員可以看懂你的東西,知道如何進行後期的維護和功能迭代。
最近在看公司項目源碼(Java)的時候,發現項目的結構非常清晰,後期維護非常便捷,原因就是運用了很多巧妙的開發技巧,在這裡也和大家分享一下,希望對你們有幫助。
1.IP地址變數化
相信大家在連接資料庫的時候是這樣寫的:
jdbc:mysql://127.0.0.1:3306/test
這是連接本地MySql資料庫的字元串,這句話看起來沒有問題,但是大多數企業項目會把資料庫獨立出來,使用資料庫一體機或遠程資料庫,這時候就需要修改上面的IP了,如果項目少這樣寫沒什麼問題,但是如果項目多了,豈不是每個項目都要去修改,這樣顯得非常不智能,所以解決方案來了:
使用hosts文件使IP地址變數化
首先介紹一下hosts文件,它的作用就是將一些網址功能變數名稱與其對應的IP地址建立一個關聯,相當於本地的DNS功能變數名稱解析器,當用戶訪問一個網址時,系統會首先從hosts文件中尋找對應的IP地址,一旦找到,系統會立即訪問對應的IP,如果沒有找到,則系統再會將網址提交DNS功能變數名稱解析伺服器進行IP地址的解析。
Windows中hosts文件位於
C:\Windows\System32\drivers\etc\hosts
,Linux中位於/etc/hosts
現在我們把資料庫連接字元串改成這樣子:
jdbc:mysql://mydb:3306/test
與之前的不同之處在於,將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")
以上只是使用配置文件的一個簡單說明,這種方式在開發一些工具程式的時候非常有用。
寫在最後
今天先寫到這吧,下一篇文章將給大家分享一個很實用的方法:利用Maven打造一個通用的工程,可以把一些通用的配置信息、類、方法進行統一管理,並且為其它工程提供服務,敬請期待喲
本文為作者kMacro原創,轉載請註明來源:http://www.jianshu.com/p/830cad891984。