使用IntelliJ IDEA開發前的基本設置,有助於提高開發效率


2、界面字體大小設置

File菜單->Settings->Appearance->Override default fonts by(not recommended):
Name:宋體(建議選擇中文,防止出現中文亂碼。起初的中文字體名稱為空白,只要把列表框拉到最后隨便選取一個空白然后應用,中文字體名便出現了,再選擇喜歡的字體。)
Size:18

3、代碼字體大小設置

File菜單->Settings->Editor->Color&Font->Font
首先點擊“save as...”保存為自定義字體設置,然后修改大小Size:18


4、解決代碼中文亂碼

點擊狀態欄右下角GBK-選擇UTF-8,然后根據情況選擇“reload”或者“convert”。


5、代碼顯示行號

File菜單->Settings->Editor-Appearance :show line numbers


6、設置IntelliJ IDEA智能提示忽略大小寫

Editor-Code Completion頁里有個Case sensitive completion,可以設置只第一個字母敏感、完全敏感或者不敏感。


7、添加自定義代碼補全

File菜單->Settings->Live Templates

先把“By default expand with Tab”改為"Space",這樣更符合VS習慣。

點擊右側的“+”新建一個TemplateGroup,名稱為user。
然后在user分組下添加自定義的LiveTemplate:
for

[java]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. for(int $INDEX$ = 0; $INDEX$ < $LIMIT$; $INDEX$++) {  
  2.   $END$  
  3. }  

if
[java]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. if ($END$) {  
  2.       
  3. }  

st
[java]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. String   

try
[java]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. try {  
  2.     $END$  
  3. catch (Exception e) {  
  4.     e.printStackTrace();  
  5. }  

print

System.out.println($END$);

while

while ($END$) {
    
}


8、更改文件自動注釋,默認生成的文件注釋為:

[java]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. /** 
  2.  * Created by ${USER} on ${DATE}. 
  3.  */  

更改方法:

打開菜單:File-Settings打開選項設置,找到File and Code Templates--Includes--File Header,修改為:

[java]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. /** 
  2.  * Created by sing on ${DATE}. 
  3.  * desc:  
  4.  */  

選擇Templates-class,修改:

[java]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end  
  2. #parse("File Header.java")  
  3. public class ${NAME} {  
  4. }  
為:

[java]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end  
  2. #parse("File Header.java")  
  3. public class ${NAME} {  
  4.     private static final String TAG = "${NAME}";   
  5. }  

使得創建類的時候自動創建TAG。



怎樣調出javadoc注釋視圖

View | Quick Documentation or the corresponding keyboard shortcut

快捷鍵是Ctrl + Q






 IntelliJ中,除了IDE自帶的標准模板,它還具有強大的定義新模板的功能。使用過Eclipse(MyEclipse)的程序員對定義模板並不會陌生,

也一定從中受益。其實,IntelliJ也具有相同的功能。且不去比較哪個IDE功能更強大。很多新使用IntelliJ的人,和我一樣,會因為IntelliJ復雜

的操作而頭疼,不知道從哪里入手。加上國內關於IntelliJ的介紹少之又少,相比Eclipse,上手IntelliJ要復雜的多。本篇是在閱讀了以下博文后

記錄下來的Live Template的操作:

      http://www.javacodegeeks.com/2011/11/whats-cool-in-intellijidea-part-ii-live.html

      首先,Ctrl+J快捷鍵組合用於獲得相關模板的列表(對自定義模板和系統模板都起作用)。一般這些縮寫都是模板關鍵詞首字母的組合。

 

           



      在Settings -> Live Templates -> By default expand with選項,我們可以設置擴展提示鍵(default expansionkey),默認的為

Tab。這里設置為Space,因為Space鍵更符合自己的習慣。當然,你可以不作改動,或者設成其他系統提供的Key。 

 

  那么,怎樣去定義自己的模板?                                                                          


      首先,我們先來定義一個我們常用的模板。由於一些原因,IntelliJ並沒有提供try-catch模板。它只提供了把一行語句用try-catch代碼塊

實現的功能http://www.javacodegeeks.com/2011/11/whats-cool-in-intellijidea-part-i.html#surround-with-live-template當我們

想實現一個空try-catch代碼塊的時候,卻需要手動輸入。

Settings(Ctrl+Alt+S) -> Live Templates -> Add -> Edit Live Template

      制作try-catch模板,我們只需要輸入Abbreviation和try-catch代碼,選中Java code選項。



      try-catch模板非常簡單,它只有一些給定的關鍵字。IntelliJ提供的功能遠不止如此,例如,把光標定位到某個位置。

      如果我們想添加一個throwable類型在catch中,我們可以添加一個($EXCEPTION$)並通過IntelliJ提供的一個特殊的函數來定義它的值。

例如,我希望輸入一個java.lang.Exception類的子類型,因此我使用了subtype(<type>)函數。

 


      在上圖中,你可能發現我使用了$END$,但是卻沒有編輯窗口,這是因為$END$是預定義的變量,它用把光標最后定位到這個位置。

      現在,我們來試一下輸入try,然后按space鍵,我們可以看到擴展出的模板。



      首先,光標被定位到catch括號中,來選擇exception類型。Enter,光標將會返回到try代碼塊中。

      我們可能會需要進一步調用exception方法,通過模仿Ctrl+Space來使用一個特殊的方法。這是一個可選的例子,我們假設現在需要這么

做。

      定義一個$METHOD$,在Edit Live Template窗口中賦值為complete()函數。



      一旦exception類型被選中,將會自動的產生exception實例的列表提示。

      這些都是可用於Live Templates為變量賦值的方法。更值得一提的是,這種方法不僅是用於Java語言,其他語言也同樣可以,例如

JavaScript, HTML, Groovy Code。 

 

  給語句添加模板?                                                                                            


      IntelliJ的Live templates提供其他類型的模板——surrounding templates。這意味着你可以選擇一行代碼塊(甚至只是光標的一個位置)

然后按Ctrl+Alt+T快捷鍵,就會彈出建議的模板。

      定義一個surround templates和normal templates的操作基本一樣。在Template text中輸入$SELECTION$









模板帶給我們的好處很明顯:約束+重用。通過模板我們可以把變與不變分離,重用不變,變可以交給子類/通過回調機制完成,而且還具有約束作用,防止亂寫代碼。

 

那我們應該利用好這個技術,加速項目的開發速度。接下來我們看看如何利用模板技術來加速我們的開發速度。

 

接下來,我將介紹下如何利用模板技術加速開發速度,但不會接受如何利用模板技術開發可復用的代碼;本文以IntelliJ IDEA為原型介紹:

1、代碼生成

2、Live Template

3、File and code Templates

4、自動代碼生成

 

1、代碼生成

如我們要求 i + j,可以先:

int k = add(i, j); 

然后按Alt+enter自動生成相關代碼;而不是自己去敲;其會自動生成相應的變量和方法體;如圖

 

1、按Alt+Enter彈出如創建方法/創建本地變量的提示

 

2、可以根據生成的模板方法,修改模板參數;

 

3、還有典型的如生成構造器、getter/setter等,按Alt+Insert得到如下圖:


 

比如在生成構造器時,可以選擇相關字段,會自動生成相應的賦值操作:


 

4、Ctrl+O/Alt+Insert生成覆蓋方法;ctrl+I/Alt+Insert生成實現方法的

 

5、選中代碼后,Ctrl+Alt+T彈出Surround with,生成包圍代碼的的代碼,如if/else:

 

6、在如JSP標簽頁面中,按Ctrl+Alt+J,生成環繞的標簽:



 

等等。。具體可以參考jetbrains.官網的《Generating Code》部分。

 

2、Live Template

如果用過idea,肯定用過如輸入 psvm 然后按Tab鍵,會自動生成public static void main方法,使我們少輸入很多字符。這個功能在idea中叫做Live Template;接下來讓我們看看有哪些Live Template和如何自定義Live Template。

 

最常見的功能:

1、psvm----->public static void main(String[] args) {}

2、psfi ------->public static final int 

3、ifn   會自動生成如下圖


……

 

大家可以通過 File--->Settings---->Live Templates找到所有模板,如:


如 lazy 生成延遲初始化的代碼,inn生成if (** != null)

 


如fori --->for (int j = 0; j < ; j++) {}    

List list;  itli  ----> for (int i = 0; i < list.size(); i++) { Object o =  list.get(i);}




    

等等,這個可以去Settings里查看。

 

接下來我們看看如何自定義自己的Live Template:



 

1、輸入“縮寫前綴”,即在代碼中輸入的前綴;

2、模板文本;

3、Change:選擇在哪使用;

 

接下來在Java文件中,輸入test會生成 hello world;

 

此處看到 $END$ 這種變量,接下來解釋下:

1、格式是$變量名$

2、$END$ : 表示展開模板后光標停留的位置,比如我們的test,生成模板后,光標停留在hello world 前邊;

3、$SELECTION$ : 表示對選中的代碼應用模板;如我們定義test為:


 


 

此處選中“int i = 1;”,然后按Ctrl+Alt+T 彈出“Surround With” 然后輸入test前綴,自動生成:--->hello int i = 1; world 

 

還有如 輸入 if for等前綴 按Ctrl+Shift+Enter會自動生成 帶()和{} 的形式,非常方便。

 

如果想定義自己的變量,可以直接點擊在編寫模板時,模板文本右邊的:“Edit variables” 編寫:如得到返回的變量,方法名,類名等等。

 

大家可以參考官網的《Live Templates》。

 

3、File and code Templates

到此我們使用的都是代碼塊級別的模板,在工作中我們常見的還需要:

1、生成如Copyright頭;

2、生成類頭Javadoc,如用戶、時間、版本;

3、創建如spring配置文件,每次可能都是從別的地方復制一份;

4、如我們做企業項目時,都先寫一個CRUD的DAO、Service、Controller等等,但是幾乎每一個模塊都是類似的,但是我們每次可能都要重復寫一遍;

 

因為IDEA使用的是velocity模板,所以語法相對來說是比較靈活的,而Eclipse看了下是自創的,所以在創建時沒有IDEA靈活。

 

File---->Settings--->File and Code Templates 打開模板設置頁面

 

3.1、給Class生成Copyright頭

1、創建Include文件


1、首先選擇Includes標簽,然后點擊創建創建一個;

2、接着Name處輸入名字;

3、Extension部分輸入擴展名;

4、文件正文;

此文件包含了我的copyright

 

2、添加到類模板中

1、 首先選中Class;

2、在頁面頂部使用 @parse("Coyright.java")把剛才寫的文件包含進來

 

接着新建一個Java Class,在頁面的頂部會出現這個copyright;

 

3.3、自定義Service模板 

KeyValueService.java為例。

 

1、首先File--->Settings---->File and Code Templates進入模板設置頁面

2、創建模板,如圖所示


 
1、點擊Templates標簽,點擊新增按鈕

2、Name處輸入名字

3、Extension處輸入擴展名

4、輸入模板正文,此處我們可以使用${NAME}和${PACKAGE_NAME}分別獲取輸入的文件名和包名

5、語法是velocity語法,所以很強大,按理說很復雜的需求也可以實現

 

3、新增Class

3.1、在包處Alt+Enter彈出新建列表,選擇Java  Class

 

3.2、 接着在彈出的界面中輸入 Service的前綴,並選擇Service類型:


 

4、接着類就創建好了:

Java代碼   收藏代碼
  1. /** 
  2.  * Copyright (c) 2005-2012 https://github.com/zhangkaitao 
  3.  * 
  4.  * Licensed under the Apache License, Version 2.0 (the "License"); 
  5.  */  
  6. package com.sishuok.es.maintain.keyvalue.service;  
  7.   
  8. import com.sishuok.es.common.inject.annotation.BaseComponent;  
  9. import com.sishuok.es.common.service.BaseService;  
  10. import com.sishuok.es.maintain.keyvalue.entity.HelloValue;  
  11. import com.sishuok.es.maintain.keyvalue.repository.HelloRepository;  
  12. import org.springframework.beans.factory.annotation.Autowired;  
  13. import org.springframework.stereotype.Service;  
  14.   
  15. /** 
  16.  * <p>User: Zhang Kaitao 
  17.  * <p>Date: 13-6-20 下午4:31 
  18.  * <p>Version: 1.0 
  19.  */  
  20. @Service  
  21. public class HelloService extends BaseService<Hello, Long> {  
  22.   
  23.     @Autowired  
  24.     @BaseComponent  
  25.     private HelloRepository helloRepository;  
  26.   
  27. }  

非常方便。

 

除此之外,我們還可以定義如 jsp模板、html模板、配置文件模板等等,消除開發中的重復工作。

 

但是此種方式的主要缺點就是:一次只能一個文件。比如,我們生成Service時,其實DAO、Contoller等最好也自動生成。 接下來就需要自動代碼生成了。

 

4、自動代碼生成

估計很多朋友都使用/開發過代碼生成器;其實開發一個簡單的代碼生成器花不了多長時間,核心指導思想是:變與不變分離:

  • 不變的是結構;
  • 變的是包名、類名及實體數據。

所以根據這個思想可以很容易寫一個代碼生成器,可以按照如下步驟完成:

  • 1、自動生成一個模塊的DAO、Service、Controller;
  • 2、根據數據庫自動生成一個模塊的Entity、DAO、Service、Controller;
  • 3、自動生成一對一、一對多關系的模塊代碼;
  • 4、自動生成公司中常用的代碼的模塊代碼,如樹;

目前見到的主要有這些類型的自動代碼生成。

 

代碼生成的模板文件可以使用純文本(即純粹的字符串替換),更高級點的可以使用如velocity這種模板語言,更加強大。

 

如果有朋友不會寫代碼生成器,可以先建一個Example的示例代碼,接着做復制、粘帖、修改實體名等等完成,估計30秒鍾也能出一個基本的模塊代碼。但是如果交給代碼生成器,速度更快。

 

比如筆者剛開發的新項目,還沒時間開發代碼生成器,就寫一個一些示例,這樣如果寫新模塊就直接復制一份改改即可,尤其樹這塊節省不少時間,點擊showcase前往查看。

 

 

代碼生成器也不是萬能的,如果你做過互聯網項目,不像企業應用那樣有許多的增刪改查,所以這個時候,純粹生成CRUD的代碼生成器沒有任何意義。

 

 

到此我們介紹完了模板,使用模板能提升不少開發速度,但是模板不是萬能的,只有發現有些代碼是由:變與不變組成,那我們就可以把不變的做成模板,變的部分通過占位符(即變量)填入。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM