編碼規範系列(一):Eclipse Code Templates設置

從工作開始,經歷了幾個項目的開發,現在的項目一般都是一個團隊共同開發,而每個人都有自己的編碼習慣,爲了統一格式,項目組在項目開發之前都會制定一系列的規範。俗話說約定優於配置,但是在執行過程中往往發現效果不是很好(主要是指編碼規範這一方面)。所以我們不得不採取一些措施來協助我們統一項目開發人員的編碼風格。主要包括三個方面:設置Code Templates、Eclipse formatter、Checkstyle,本篇主要介紹如何設置Code Templates,具體步驟如下:

 

打開Window->Preferences->Java->Code Style->Code Templates

Eclipse設置Code Templates

點擊"Import",導入模板codetemplates.xml文件。

codetemplates.xml內容是我們自己預先定義好的,在這裏先不詳細描述,我們可以看到Eclipse Code Templates界面中間Configure generated code and comments區域包含了兩個菜單樹:Comment、Code,如下圖所示:

Comments代表註釋模板,Code代表代碼模板,其中每一個子菜單代表子項的模板。

我們只要點擊某一個子項,就會在界面下方的Pattern區域看到該項我們所定義的模板內容和格式,如下圖所示:

如上圖所示,當我們點擊Comments下的Files子菜單時,下面的Pattern會顯示Java文件的頭部註釋。

下面詳細列出每一個子項的模板格式:

Comments-->Files(Java文件註釋)

Java代碼  收藏代碼
  1. /** 
  2.  * Project Name:${project_name} 
  3.  * File Name:${file_name} 
  4.  * Package Name:${package_name} 
  5.  * Date:${date}${time} 
  6.  * Copyright (c) ${year}, [email protected] All Rights Reserved. 
  7.  * 
  8.  */  

Comments-->Types(Java類註釋)

Java代碼  收藏代碼
  1. /** 
  2.  * ClassName: ${type_name} <br/> 
  3.  * Function: ${todo} ADD FUNCTION. <br/> 
  4.  * Reason: ${todo} ADD REASON(可選). <br/> 
  5.  * date: ${date} ${time} <br/> 
  6.  * 
  7.  * @author ${user} 
  8.  * @version ${enclosing_type}${tags} 
  9.  * @since JDK 1.6 
  10.  */  

Comments-->Fields(類字段註釋)

Java代碼  收藏代碼
  1. /** 
  2.  * ${field}:${todo}(用一句話描述這個變量表示什麼). 
  3.  * @since JDK 1.6 
  4.  */  

Comments-->Constructors(構造函數註釋)

Java代碼  收藏代碼
  1. /** 
  2.  * Creates a new instance of ${enclosing_type}. 
  3.  * 
  4.  * ${tags} 
  5.  */  

Comments-->Methods(Java方法註釋)

Java代碼  收藏代碼
  1. /** 
  2.  * ${enclosing_method}:(這裏用一句話描述這個方法的作用). <br/> 
  3.  * ${todo}(這裏描述這個方法適用條件 – 可選).<br/> 
  4.  * ${todo}(這裏描述這個方法的執行流程 – 可選).<br/> 
  5.  * ${todo}(這裏描述這個方法的使用方法 – 可選).<br/> 
  6.  * ${todo}(這裏描述這個方法的注意事項 – 可選).<br/> 
  7.  * 
  8.  * @author ${user} 
  9.  * ${tags} 
  10.  * @since JDK 1.6 
  11.  */  

Comments-->Overriding methods(重寫方法註釋)

Java代碼  收藏代碼
  1. /** 
  2.  * ${todo} 簡單描述該方法的實現功能(可選). 
  3.  * ${see_to_overridden} 
  4.  */  

Comments-->Delegate methods(代理方法註釋)

Java代碼  收藏代碼
  1. /** 
  2.  * ${tags} 
  3.  * ${see_to_target} 
  4.  */  

Comments-->Getters(Java Getter方法註釋)

Java代碼  收藏代碼
  1. /** 
  2.  * ${bare_field_name}. 
  3.  * 
  4.  * @return  the ${bare_field_name} 
  5.  * @since   JDK 1.6 
  6.  */  

Comments-->Setters(Java Setters方法註釋)

Java代碼  收藏代碼
  1. /** 
  2.  * ${param}. 
  3.  * 
  4.  * @param   ${param}    the ${bare_field_name} to set 
  5.  * @since   JDK 1.6 
  6.  */  

Code-->New Java files(新建java文件代碼模板)  

Java代碼  收藏代碼
  1. /** 
  2.  * Project Name:${project_name} 
  3.  * File Name:${file_name} 
  4.  * Package Name:${package_name} 
  5.  * Date:${date}${time} 
  6.  * Copyright (c) ${year}, [email protected] All Rights Reserved. 
  7.  * 
  8. */  
  9. ${filecomment}  
  10.   
  11. ${package_declaration}  
  12. /** 
  13.  * ClassName:${type_name} <br/> 
  14.  * Function: ${todo} ADD FUNCTION. <br/> 
  15.  * Reason:   ${todo} ADD REASON. <br/> 
  16.  * Date:     ${date} ${time} <br/> 
  17.  * @author   ${user} 
  18.  * @version   
  19.  * @since    JDK 1.6 
  20.  * @see       
  21.  */  
  22. ${typecomment}  
  23. ${type_declaration}  

Code-->Method body(方法體模板)

Java代碼  收藏代碼
  1. // ${todo} Auto-generated method stub  
  2. ${body_statement}  

Code-->Constructor body(構造函數模板)

Java代碼  收藏代碼
  1. ${body_statement}  
  2. // ${todo} Auto-generated constructor stub  

Code-->Getter body(字段Getter方法模板)

Java代碼  收藏代碼
  1. return ${field};  

Code-->Setter body(字段Setter方法模板)

Java代碼  收藏代碼
  1. ${field} = ${param};  

Code-->Catch block body(異常catch代碼塊模板)  

Java代碼  收藏代碼
  1. // ${todo} Auto-generated catch block  
  2. ${exception_var}.printStackTrace();  
 

其中codetemplates.xml內容如下:

Xml代碼  收藏代碼
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="false" context="gettercomment_context" deleted="false" description="Comment for getter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name="gettercomment">/**  
  2.  * ${bare_field_name}.  
  3.  *  
  4.  * @return  the ${bare_field_name}  
  5.  * @since   JDK 1.6  
  6.  */</template><template autoinsert="false" context="settercomment_context" deleted="false" description="Comment for setter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.settercomment" name="settercomment">/**  
  7.  * ${param}.  
  8.  *  
  9.  * @param   ${param}    the ${bare_field_name} to set  
  10.  * @since   JDK 1.6  
  11.  */</template><template autoinsert="false" context="constructorcomment_context" deleted="false" description="Comment for created constructors" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name="constructorcomment">/**  
  12.  * Creates a new instance of ${enclosing_type}.  
  13.  *  
  14.  * ${tags}  
  15.  */  
  16. </template><template autoinsert="false" context="filecomment_context" deleted="false" description="Comment for created Java files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.filecomment" name="filecomment">/**  
  17.  * Project Name:${project_name}  
  18.  * File Name:${file_name}  
  19.  * Package Name:${package_name}  
  20.  * Date:${date}${time}  
  21.  * Copyright (c) ${year}, [email protected] All Rights Reserved.  
  22.  *  
  23.  */</template><template autoinsert="false" context="typecomment_context" deleted="false" description="Comment for created types" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.typecomment" name="typecomment">/**  
  24.  * ClassName: ${type_name} &lt;br/&gt;  
  25.  * Function: ${todo} ADD FUNCTION. &lt;br/&gt;  
  26.  * Reason: ${todo} ADD REASON(可選). &lt;br/&gt;  
  27.  * date: ${date} ${time} &lt;br/&gt;  
  28.  *  
  29.  * @author ${user}  
  30.  * @version ${enclosing_type}${tags}  
  31.  * @since JDK 1.6  
  32.  */</template><template autoinsert="false" context="fieldcomment_context" deleted="false" description="Comment for fields" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name="fieldcomment">/**  
  33.  * ${field}:${todo}(用一句話描述這個變量表示什麼).  
  34.  * @since JDK 1.6  
  35.  */</template><template autoinsert="false" context="methodcomment_context" deleted="false" description="Comment for non-overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name="methodcomment">/**  
  36.  * ${enclosing_method}:(這裏用一句話描述這個方法的作用). &lt;br/&gt;  
  37.  * ${todo}(這裏描述這個方法適用條件 – 可選).&lt;br/&gt;  
  38.  * ${todo}(這裏描述這個方法的執行流程 – 可選).&lt;br/&gt;  
  39.  * ${todo}(這裏描述這個方法的使用方法 – 可選).&lt;br/&gt;  
  40.  * ${todo}(這裏描述這個方法的注意事項 – 可選).&lt;br/&gt;  
  41.  *  
  42.  * @author ${user}  
  43.  * ${tags}  
  44.  * @since JDK 1.6  
  45.  */</template><template autoinsert="false" context="overridecomment_context" deleted="false" description="Comment for overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name="overridecomment">/**  
  46.  * ${todo} 簡單描述該方法的實現功能(可選).  
  47.  * ${see_to_overridden}  
  48.  */</template><template autoinsert="true" context="delegatecomment_context" deleted="false" description="Comment for delegate methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name="delegatecomment">/**  
  49.  * ${tags}  
  50.  * ${see_to_target}  
  51.  */</template><template autoinsert="false" context="newtype_context" deleted="false" description="Newly created files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.newtype" name="newtype">/**  
  52.  * Project Name:${project_name}  
  53.  * File Name:${file_name}  
  54.  * Package Name:${package_name}  
  55.  * Date:${date}${time}  
  56.  * Copyright (c) ${year}, [email protected] All Rights Reserved.  
  57.  *  
  58. */  
  59. ${filecomment}  
  60.   
  61. ${package_declaration}  
  62. /**  
  63.  * ClassName:${type_name} &lt;br/&gt;  
  64.  * Function: ${todo} ADD FUNCTION. &lt;br/&gt;  
  65.  * Reason:   ${todo} ADD REASON. &lt;br/&gt;  
  66.  * Date:     ${date} ${time} &lt;br/&gt;  
  67.  * @author   ${user}  
  68.  * @version    
  69.  * @since    JDK 1.6  
  70.  * @see        
  71.  */  
  72. ${typecomment}  
  73. ${type_declaration}  
  74. </template><template autoinsert="true" context="classbody_context" deleted="false" description="Code in new class type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.classbody" name="classbody">  
  75. </template><template autoinsert="true" context="interfacebody_context" deleted="false" description="Code in new interface type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name="interfacebody">  
  76. </template><template autoinsert="true" context="enumbody_context" deleted="false" description="Code in new enum type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.enumbody" name="enumbody">  
  77. </template><template autoinsert="true" context="annotationbody_context" deleted="false" description="Code in new annotation type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name="annotationbody">  
  78. </template><template autoinsert="true" context="catchblock_context" deleted="false" description="Code in new catch blocks" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.catchblock" name="catchblock">  
  79. // ${todo} Auto-generated catch block  
  80. ${exception_var}.printStackTrace();  
  81. </template><template autoinsert="false" context="methodbody_context" deleted="false" description="Code in created method stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodbody" name="methodbody">  
  82. // ${todo} Auto-generated method stub  
  83. ${body_statement}</template><template autoinsert="true" context="constructorbody_context" deleted="false" description="Code in created constructor stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name="constructorbody">  
  84. ${body_statement}  
  85. // ${todo} Auto-generated constructor stub  
  86. </template><template autoinsert="true" context="getterbody_context" deleted="false" description="Code in created getters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.getterbody" name="getterbody">return ${field};</template><template autoinsert="true" context="setterbody_context" deleted="false" description="Code in created setters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.setterbody" name="setterbody">${field} = ${param};</template></templates>  

 

設置Code Templates的目的主要是爲了統一各種註釋的格式以及代碼的模板,只要設定好Code Templates之後利用Eclipse就可以方便地生成我們自定義的註釋,開發人員也容易接受!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章