超愛的IDEA提效神器Save Actions,卸載了
前言
你好,我是方同學(xué)(YourBatman)
一切工具,都是為了提效。效率的提升一般來講并不改變事務(wù)的本質(zhì),但足夠高的效率也能引起質(zhì)變,這和程序員熟悉的量變引起質(zhì)變道理一樣。
IDEA作為Javaer的必備神器,幾乎每個開發(fā)者都在使用。作為(公司內(nèi))IDEA的布道者,筆者分享的每篇IDEA相關(guān)文章都能受到喜愛,比如最近的兩篇:
- 【方同學(xué)】是如何高效的使用IntelliJ IDEA
- 【方同學(xué)】利用IDEA代碼審查能力,來保證代碼質(zhì)量
工具好,也要用得巧。雖說每個Javaer都在用著同一個工具(IDEA),但對工具的使用效率上往往差異較大,可以翻看👆🏻的文章,看看自己是否在低效率的使用它!
本文給你安利一個提效神器:Save Actions,再向你解釋下筆者為什么要卸載它!
所屬專欄
- BATutopia-IntelliJ IDEA
相關(guān)下載
- 【女媧Knife-Initializr工程】訪問地址:http://152.136.106.14:8761
- Java開發(fā)軟件包(Mac):https://wangpan.yourbatman.cn/s/rEH0 提取碼:javakit
- 程序員專用網(wǎng)盤上線啦,開放注冊送1G超小容量,幫你實踐做減法:https://wangpan.yourbatman.cn
版本約定
- IntelliJ IDEA 2021.2
正文
代碼風(fēng)格一致性
開發(fā)過程中,當(dāng)遇到痛點時總希望去尋找相應(yīng)的工具解決。
在開發(fā)項目時,一般都是多人維護一個項目。代碼寫下去只需要1次,但會被人看幾十上百次,所以保持一致的代碼規(guī)范、代碼展示變得非常重要。但是,當(dāng)團隊內(nèi)多人開發(fā)一個項目時,由于每個人的編碼習(xí)慣、思維習(xí)慣、水平、覺悟都高低不一具有多樣性,那么如何保證“所有人”的代碼風(fēng)格一致呢?
這個時候就得使用規(guī)則了。
相信很多團隊各自都有自己的代碼規(guī)范模板,模板一般是取最大公約數(shù)定出來的,比較容易達成一致。畢竟漂亮的東西趨同,只會丑得千奇百怪。定好代碼的規(guī)范模板后,組員如何能高效的實施呢?這個時候一般要求提交代碼之前必須(按照規(guī)范模板)格式化處理,進而達到抹平差異,去除掉個人風(fēng)格,達到統(tǒng)一的目的。
問題又來了:IntelliJ IDEA是自動保存的,因此很多時候你修改了代碼之后就出現(xiàn):代碼沒有格式化、出現(xiàn)無用的import、無用的變量等一些列“不規(guī)范”的問題就保存了/提交了,怎么破?
針對這類痛點,作為開發(fā)神器的IDEA怎能想不到。因此它也針對性的提供了相應(yīng)方案。
代碼審查
嗯,方式方法都在這里:【方同學(xué)】利用IDEA代碼審查能力,來保證代碼質(zhì)量
優(yōu)點:全局掃,大而全
缺點:項目太大時候可能慢。另外,畢竟還是手動的,忘記了就沒轍了
commit前執(zhí)行Action
在IDEA的commit窗口欄里,點擊如圖紅色框框里的設(shè)置按鈕:
每個選項都代表什么功能,單詞你都認識,所以不用多余解釋了。
優(yōu)點:在提交前集中式卡點,可做到?jīng)]有漏網(wǎng)之魚
缺點:階段過于靠后。若需要修改,留給RD修改的時間太少了。所以經(jīng)常會出現(xiàn)妥協(xié)式提交
PS:如果你平時提交代碼用黑窗口、Smart Git而非IDEA,那就享受不到此“福利”嘍
就我個人習(xí)慣而言,我不喜歡使用commit這種方式,工作中也很少使用。我認為應(yīng)該將此動作提前:編輯每個文件保存時就及時觸發(fā)相應(yīng)動作,并且是自動的(無需人為干預(yù))。
所以,接下來就引入本文主角:Save Actions。
Save Actions是什么?
直譯:保存動作(們)。翻譯為保存時觸發(fā)的動作更為合適~
它其實也就是IDEA的一個插件而已:
簡介為:支持可配置的、類似Eclipse的保存操作,包括“優(yōu)化導(dǎo)入”、“重新格式化代碼”、“重新排列代碼”、“編譯文件”和一些Java快速修復(fù)程序,如“添加/刪除“this”限定符”,等等。當(dāng)文件在磁盤上同步(或保存)時,插件將執(zhí)行配置的操作。
驚不驚喜?這不正是我們需要的功能嗎?是的,有了它,再也不用擔(dān)心團隊成員提交沒有“處理”過的代碼了。
我的常用配置如下截圖:
如果你樂意,還可以勾選多個Java檢查快速修復(fù)功能點(Java Inspection and Quick Fix),我一般不勾。
為何卸載Save Actions?
既然Save Actions這么好用,筆者為何要卸載它呢?一切都要從IDEA的迭代發(fā)展說起~
并不是筆者不重視這塊了,而是有更好的方式取而代之。筆者從2017年底開始使用IDEA到現(xiàn)在,見證了它的迭代,最近幾個版本都有寫新特性的文章哦:
- IntelliJ IDEA 2020.3正式發(fā)布,年度最后一個版本很講武德
- IntelliJ IDEA 2020.2正式發(fā)布,諸多亮點總有幾款能助你提效
- IntelliJ IDEA 2020.1發(fā)布,你要的都在這!
- IntelliJ IDEA 2019.3發(fā)布,有哪些新特性?
隨著IDEA的發(fā)展,硬核功能點越來越完善。舉個例子:lombok自2015年起逐漸流行開來,因此在IDEA上安裝lombok插件也就成了必備動作。既然如此,IDEA在其2020.3便將lombok插件設(shè)為內(nèi)置,開發(fā)者無需再手動安裝:
同理,IDEA眼瞅著使用者對自動代碼格式化/自動代碼檢查的需求這么高,索性就將此功能也內(nèi)置了。值得注意的是:從2021.2版本起才內(nèi)置哦。
此功能并非以插件形式內(nèi)置,位置在這:Preferences/Settings | Tools | Actions on Save
以上(勾選的)動作在保存時會自動觸發(fā)。有了它,我似乎沒有理由再留著Save Actions插件,這便是筆者卸載它的根因。
下面對最常用的3個功能進行簡述:
Reformat code
格式化代碼,推薦勾選☑️ 。
格式化代碼范圍:
Whole file:整個文件。這是默認選項
Changed lines:只格式化修改的行(們)。保守點的話,你可以使用此選項
Configure scope:配置范圍。支持書寫glop patter語法來自定義需要格式化的代碼范圍;支持通過@formatter:off/on等方式來控制某段代碼不允許/允許格式化。這個自定義的功能怎么說呢,絕大多數(shù)情況下用不著這么去自定義,畢竟大大提高了復(fù)雜度。
格式化MyBatis的xml文件里的SQL時有時會出問題,這時可以通過加上@formatter:off/on注解來禁止格式化(需要先開啟此功能)
Optimize import
重新排列import導(dǎo)包。作用:
將import按照順序重新排列(比如static靜態(tài)導(dǎo)入會放到最后)
刪除掉無用的import
推薦勾選☑️ 。
Rearrange code
重新排列代碼,推薦勾選☑️ 。
關(guān)于這個功能可能有的同學(xué)不太了解,拿Java舉個栗子吧。
源代碼:
- /**
- * 在此處添加備注信息
- *
- * @author YourBatman. <a href=mailto:yourbatman@aliyun.com>Send email to me</a>
- * @site https://yourbatman.cn
- * @date 2021/8/20 15:06
- * @since 0.0.1
- */
- public class Demo {
- private String name;
- public int fun1(){return 0;}
- private void fun0(){}
- private static void funStatic0(){}
- private int age;
- public static void funStatic(){}
- }
代碼保存(觸發(fā)Optimize import動作)后:
- /**
- * 在此處添加備注信息
- *
- * @author YourBatman. <a href=mailto:yourbatman@aliyun.com>Send email to me</a>
- * @site https://yourbatman.cn
- * @date 2021/8/20 15:06
- * @since 0.0.1
- */
- public class Demo {
- private String name;
- private int age;
- private static void funStatic0() {
- }
- public static void funStatic() {
- }
- public int fun1() {
- return 0;
- }
- private void fun0() {
- }
- }
這就是重新排列的含義。自上而下排序規(guī)則:屬性 -> 靜態(tài)方法 -> 實例方法。
開發(fā)工具保持使用最新版
在編程界,坐在第二排看戲被公認不失為一種很好的升級策略:既保證不會過于陳舊享受不到新技術(shù)紅利,又在穩(wěn)定性上有所保證。比如:
- JDK版本不要當(dāng)小白鼠追新
- Spring Boot、中間件版本不要一味追求最新版
- ...
根據(jù)我的從業(yè)經(jīng)驗,對此觀點有所改變,分享出來供你參考:
和數(shù)據(jù)打交道的基礎(chǔ)設(shè)施層面(如JDK、Spring Boot、MQ、Redis...),盡量保守點,畢竟穩(wěn)定壓倒一切
開發(fā)工具類(如IDEA、DataGrid、Navicat...)推薦保持最新版,享受新功能特性帶來開發(fā)效率上的提升,原因有三
1、享受新紅利:可能是性能上提升、也可能是新功能來輔助你提升開發(fā)效率。畢竟對于軟件來講,新不如舊的可能性極低極低
2、keep update能讓你對升級不再恐懼。畢竟若從2017年版本一步升級跨入2021年版本,對兼容性方面心里都會打鼓
3、開發(fā)工具即使出現(xiàn)(重大)bug,對數(shù)據(jù)不會造成任何影響,況且這個概率極低極低
即使是開發(fā)工具升級切勿盲目。至少你得看看升級的feature,是否存在阻斷式更新等等...當(dāng)然,據(jù)我了解,以IDEA為例,同學(xué)們不升級到最新版的最大阻礙是:無法破解。這個筆者就不多說什么了(畢竟正版IDEA確實比較貴...),是否購買正版自行選擇嘍~
總結(jié)
本文旨在輸出一個觀點:一切工具旨在提效,工具好也要用得巧。正所謂同樣一把菜刀,握在米其林餐廳廚師手中和握在街邊小炒廚師手中的功效的完全不一樣的。