高質量代碼
重構
重構是爲了提高代碼的可讀性,或者對某些方法快速修改
變量
- 在菜單欄Refactor下的Rename,將光標停留在變量上,使用快捷鍵
shift + F6
- 如圖,變量及其被引用的地方可以同步修改
函數
- 當我們發現調用某個方法時參數不滿足要求,可以在調用處進行預設,再返回定義處修改
- 同樣在菜單欄Refactor下Change Signature,快捷鍵
ctrl + F6
- 也可修改後使用強大的
Alt+Enter
,實現同樣的效果!
抽取
- 顧名思義,當我們想要將部分代碼內容替換成需要的形式,可以將其抽取出來的同時重新定義
變量
- Refactor下Extract下Variables,使用快捷鍵
Ctrl + Alt + V
代碼就會變成這樣:public void main(String[] args) { String name = "Roy"; int age = 18; String myName = name; // 抽取成變量myName say(myName, this.age); say(myName, this.age); say(myName, this.age); say(myName, this.age); say(myName, this.age); }
面對如此整齊的格式你可能想使用
Ctrl + Alt + Shift + J
,當然可以!
靜態變量
- 將使用的字符串變爲靜態變量,快捷鍵
Ctrl + Alt + C
public static final String ROY = "roy"; // 抽取成靜態變量
成員變量
- 使用快捷鍵
Ctrl + Alt +F
,因爲成員對應Field
private int myAge; // 抽取成成員變量
方法參數
- 當方法內部依賴於成員變量的時候,爲了部分解耦可以將其抽取成方法參數
- 快捷鍵
Ctrl + Alt + P
,parameter的意思!public void say() { System.out.println(this.name); }
public void say(String name) { // 抽取成方法參數 System.out.println(name); }
函數
- 將複雜的代碼邏輯分塊寫成函數
public void main(String[] args) { String name = "Roy"; int age = 18; say("我是誰", "我多大"); say("你是Roy", "你18"); say("你幹啥的", "幹多久了"); say("我是神", "一萬年"); // 感受到它的複雜了嗎 }
- 快捷鍵
Ctrl + Alt + M
,method的意思
public void main(String[] args) { String name = "Roy"; int age = 18; resume(); job(); } private void job() { // 抽取成一個函數 say("你幹啥的", "幹多久了"); say("我是神", "一萬年"); } private void resume() { say("我是誰", "我多大"); say("你是Roy", "你18"); }
- 你想將它抽取成什麼呢?快試試吧!
按圖索驥
- 在一個大型項目中,如果對別人寫的某一行代碼不理解,怎麼快速確定這段代碼出自誰之手?
git集成
- 現在最常用的是git版本控制,這裏記錄一些git相關的操作
- 如果還不瞭解git可以參考其他博客入門,或者找廖雪峯老師的教程
- 獲取作者信息
如圖,只需要在這行代碼的左側欄右鍵Annotate
,鼠標移動上去就會出現相關信息 - 回顧修改的地方
在help中搜索“Previous Change”就可以找到Ctrl + Shift + Alt + ↑/↓
- 撤銷
如果改動之後忘了之前的狀態或者需要刪除改動,可以help搜索“Revert”找到
只需將光標停留在改動處,Alt + Ctrl + Z
即可
我們也可以在整個文件或者項目上使用,會出現如下提示:
Local History
- 如果我們沒有使用版本控制,IntelliJ默認提供了記錄功能
- help搜索“Local History”,可能沒有快捷鍵,使用
Alt+Enter
自定義一個,我使用Alt + L
伴隨着“Show history”還有一個“Put label”,這類似於git中的commit,這裏將修改提交到history並自定義名稱,例如我這裏的“recent change”
關聯
- 和之前說到的跳轉類似,但這裏是基於框架和數據庫的關聯功能
Spring
- Spring是一個輕量級控制反轉(IoC)和麪向切面(AOP)的容器框架,目的是解決企業應用開發的複雜性
- 類似於PHP中的Thinkphp你懂嗎hhh,如果開發java Web項目得學一下
- 這裏簡單介紹一下它的關聯方式
在Spring項目中,File->Project Structure->Facets下,添加一個Spring即可
在自定義的類左側出現Spring標誌,點擊Spring標誌,可跳轉到定義位置
數據庫
- 使用java連接數據庫:在側邊欄的Database中點擊“+”號
- 這裏連接本地數據庫,可以使用Test Connection測試連接,如果第一次連接需要下載Driver
- 可能需要在Advanced裏面設置一下timezone
- 在Java中操作數據庫可以使用MyBatis,是一個持久層框架
- 在編輯sql代碼時可以自動關聯數據庫,通過修改SQL mapper可以自動同步到數據庫,修改數據庫後可以自動更改mapper
小結
這裏記錄了IDEA中優化、跟蹤代碼的一些技巧,還有框架的功能,在實際項目中多摸索,會發現更多值得掌握的技巧!
下節記錄IDEA中的調試和文件操作相關技巧