程序員的工作不是寫程序,而是寫程序解決問題。 --- 某不知名程序員
我們每天都在寫代碼,有些代碼有結構性的相似,但不是所有的代碼都可以被抽成方法。在這種情況下,我們應該考慮使用template的方式加快我們的開發速度。這篇博客會先介紹IntelliJ下已經有的一些code/live template,然後介紹如何自定義template。
1.IntelliJ下已有的template
在java中,我們時常會遇到遍歷一個iterable的情況。如下所示:
for (Integer item : items) {
//...
}
你可以選擇一個字母,一個字母的敲,但是在IntelliJ下面,你只需要輸入iter再按TAB鍵,就可以自動生成這個代碼,和原來的代碼比起來,你需要敲鍵盤的次數少了幾倍。
這個時候,紅色的框框部分就是當前你的編輯區域,因爲我之前有一個items的變量,這裏IntelliJ會建議Iterable是items。如果你覺得不對也可以修改,確認後敲Enter。
敲了回車以後,就進入下一個編輯的部分,而不需要你手動的去移動光標。確實很Intelligent啊。
IntelliJ中提供了很多現有的Code/Live Template,你可以在Settings中找到這些已有的template:
比如sout可以輸出System.out.println(...), ifn可以輸入if (xxx == null) 等等。學習這些template,並且靈活運用,可以縮短你敲鍵盤的速度。
2.自定義Live Template
IntelliJ提供了很多現成的template。但你也可以根據自己的需要創建新的template。舉個例子,我們經常在測試代碼中寫出如下的代碼:
assertThat(person.getAge(), is(18));
我們會寫很多次的assertThat(..., is(...))。每次這樣去敲,讓我覺得很煩,
我們來看如何在IntelliJ中配置這個模板來簡化這個輸入。
如上圖所示,進入IntelliJ的Settings的Live Template,我們創建一個新的template:ati。
1)縮寫名(Abbreviation):ati。ati就是assertThat(..., is(...))的縮寫,在以後,你只需要輸入ati,就有辦法自動變成assertThat(..., is(...));了
2)模板文本(Template text):assertThat($result$, is($expect$))。這裏被$括起來的部分就是敲了Enter以後,光標會停留的部分。
3)使用情況(Applicable):statement。這表示你創建一個statement的時候,可以用到這個template。
4)選項(options):Enter。這裏我選擇的使用Enter出發ati變成完整的assert語句。不過建議使用TAB,這樣的話,和IntelliJ自己提供的template保持統一。
這樣就配好了template。讓我們來試驗一下:
第二行就是提示template,這個時候輕盈的按下TAB鍵,就會看到:
光標就正在等待你輸入了。
總結:
寫程序不是程序員的目的,解決問題纔是程序員的目的,寫程序只是解決問題的一種手段而已。當我們採用寫程序這種方式解決問題時,我們仍然需要專注於問題本身。
提高我們編碼的速度,目的不是自嗨,只是爲了減少敲鍵盤對我們思考問題、解決問題的干擾。
做到心中無碼,才更容易專注於解決問題。