乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Eclipse的Template、快捷鍵的用法和設置(2)

       linjisong 2007-09-22
      幾個自定義Eclipse模板的示例
      最后來談談怎么創(chuàng)建模板,試著舉幾個簡單的例子來作說明。
      1. 簡單的Eclipse模板的創(chuàng)建
      直接將需要作為模板的語句填寫在模板的Pattern欄里,如前面的public final static String SEQUENCE_T_PRODUCT_HIST = "T_PRODUCT_HIST";這樣的常量的定義。我們可以定義一個strConstant的模板,將該模板的Pattern寫為:“public final static String ${cursor} ;”。其中${cursor}的意思是光標所在的位置。
      這樣,你如果在程序的適當位置輸入:strConstant,然后點擊Atl /,那么你將得到如下的結(jié)果:
      public final static String (光標所在位置) ;
      在實際的項目中,我們會遇到這樣的情況:
      if (LOG.isDebugEnabled()) {
      LOG.debug(METHOD_NAME, "The user : " user.getName);
      }
      我們?yōu)榱诵阅艿目紤],經(jīng)常希望在日志被關閉以后,不再執(zhí)行LOG.debug方法里面的任何操作,如"The user : " user.getName這樣的語句。所以我們在LOG.debug方法外面加上LOG.isDebugEnabled()這樣的判斷語句。加上了判斷語句以后,代碼的性能得到了提高,但每一個日志都加上:
      if (LOG.isDebugEnabled()) {
      }
      卻帶來了代碼重用上的困難。如今使用Eclipse模板正好解決了這個問題。
      我們來創(chuàng)建一個enabledLOG的模板,它的Pattern為:
      if (LOG.isDebugEnabled()) {
      LOG.debug(METHOD_NAME, "${cursor}");
      }
      還有一個例子,我們在寫自定義標簽的時候,經(jīng)常需要編碼的是doEndTag方法,在這個方法里面,我們要先寫日志:
      final String METHOD_NAME = "doEndTag";
      PLOG.info(METHOD_NAME, PerformanceLogger.Event.METHOD_ENTRY);
      然后將我們的代碼用try…catch包括起來,如下:
      try {
      ……
      } catch (Exception e) {
      LOG.error(METHOD_NAME, "……", e);
      }
      省略號都是我們要寫的代碼。
      最后,我們又需要紀錄日志,然后返回,如下:
      PLOG.info(METHOD_NAME, PerformanceLogger.Event.METHOD_EXIT);
      return SKIP_BODY;
      每一個自定義標簽的格式都是如此,因此,我們可以創(chuàng)建一個doEndTag的模板,它的Pattern為:
      public int doEndTag() throws JspException {
      final String METHOD_NAME = "doEndTag";
      PLOG.info(METHOD_NAME, PerformanceLogger.Event.METHOD_ENTRY);
      try {
      ${cursor}
      } catch (Exception e) {
      LOG.error(METHOD_NAME, "", e);
      }
      PLOG.info(METHOD_NAME, PerformanceLogger.Event.METHOD_EXIT);
      return SKIP_BODY;
      }
      在實際的編碼過程中,我們會遇到很多這樣的例子,使用Eclipse模板,將會把我們從煩躁而易于出錯的拷貝粘貼中解放出來。
      2. 帶參數(shù)的Eclipse模板
      Eclipse除了能讓我們創(chuàng)建簡單的、靜態(tài)的Eclipse模板以外,還可以讓我們創(chuàng)建動態(tài)的模板,這就是帶參數(shù)的模板。請看下面的例子:
      private static final String EMPLOYEE_SQL = "SELECT * FROM EMPLOYEE";
      protected String getEMPLOYEE_SQL () {
      return EMPLOYEE_SQL;
      }
      private static final String DEPART_SQL = "SELECT * FROM DEPARTMENT";
      protected String getDEPART_SQL () {
      return DEPART_SQL;
      }
      這是我在實際項目中遇到過的代碼,這兩個相似的代碼,除了常量的值不同以外,還有常量名不同,get方法不同,但get方法都是“get 常量名”的組合。對于這樣的模板,我們就需要引入帶參數(shù)的Eclipse模板。具體方法如下:
      我們創(chuàng)建一個名為sqlConstant的模板,它的Pattern如下:
      private static final String ${name} = "";
      protected String get${name}() {
      return ${name};
      }
      其中的${name}就是我們的模板參數(shù),當我們在程序的適當位置輸入sqlConstant,然后點擊Alt /的時候,出現(xiàn)如下的效果:
      這種參數(shù)的好處是,我們有三個地方為name,當我們在一個地方修改nameEMPLOYEE_SQL的時候,其他的兩個地方的name同時改為EMPLOYEE_SQL
      我們看,這樣的帶參數(shù)的模板是不是很好用。
      我們再來看一個例子:
      假設我們有這樣的代碼,
      protected static IEmployeeBSV getEmployeeBSV()
      {
      IBusinessServiceManager bsvmgr = GenericContainer.getInstance().getBusinessServiceManager();
      return (IEmployeeBSV) bsvmgr.getBusinessService(IEmployeeBSV.class);
      }
      protected static IDepartmentBSV getDepartmentBSV()
      {
      IBusinessServiceManager bsvmgr = GenericContainer.getInstance().getBusinessServiceManager();
      return (IDepartmentBSV) bsvmgr.getBusinessService(IDepartment.class);
      }
      我們就可以創(chuàng)建一個名為bsv的模板,其Pattern如下:
      protected static I${enclosing_method} get${enclosing_method}()
      {
      IBusinessServiceManager bsvmgr = GenericContainer.getInstance().getBusinessServiceManager();
      return (I${enclosing_method}) bsvmgr.getBusinessService(I${enclosing_method}.class);
      }
      從上面的例子可以看出,給Eclipse模板帶上參數(shù)以后,對Eclipse模板的使用就更加的靈活了。這樣,我們就可以更加靈活的創(chuàng)建Eclipse模板,更加靈活的使用Eclipse模板了。
      3. Eclipse模板的幾個特殊參數(shù)
      我們可以引用${enclosing_type}參數(shù)來代表使用模板的代碼所在的類的類名。假如我們有如下的代碼:
      public class ICRMValidationFormTag
      {
      private final static Logger.Module MOD = new Logger.Module(ModuleId.MOD_TAG);
      private final static Logger LOG = Logger.getLogger(ICRMValidationFormTag.class, MOD);
      private final static PerformanceLogger PLOG = PerformanceLogger.getLogger(ICRMValidationFormTag.class);
      ……
      }
      public class Employee
      {
      private final static Logger.Module MOD = new Logger.Module(ModuleId.MOD_TAG);
      private final static Logger LOG = Logger.getLogger(Employee.class, MOD);
      private final static PerformanceLogger PLOG = PerformanceLogger.getLogger(Employee.class);
      ……
      }
      我們可以將每個類的前面三行作為一個模板,名為myLog模板,Pattern為:
      private final static Logger.Module MOD = new Logger.Module(ModuleId.MOD_TAG);
      private final static Logger LOG = Logger.getLogger(${enclosing_type}.class, MOD);
      private final static PerformanceLogger PLOG = PerformanceLogger.getLogger
      (${enclosing_type}.class);
      這樣,如果我們在ICRMValidationFormTag類里引用myLog模板,如下:
      public class ICRMValidationFormTag
      {
      myLog
      }
      則模板中凡是${enclosing_type}的地方,都將被ICRMValidationFormTag代替。
      如果我們在Employee類中引用該模板,如下:
      public class Employee
      {
      myLog
      }
      則模板中凡是${enclosing_type}的地方,都將被Employee代替。
      同理,我們可以使用${enclosing_method}參數(shù)來代替使用模板的代碼所在方法的方法名,如,如果我們想用模板來代替每一個方法里形如final String METHOD_NAME = "getEmployee";的語句,我們可以使用這樣的模板:
      模板名為methodName,Pattern為:
      final String METHOD_NAME = "${enclosing_method}";
      這樣,如果你在getEmployee方法里使用該模板,那么結(jié)果為:
      final String METHOD_NAME = "getEmployee";
      如果你在saveEmployee方法里使用該模板,那么結(jié)果為:
      final String METHOD_NAME = "saveEmployee";
      其他的幾個常用的特殊參數(shù)有:enclosing_method_arguments—返回該參數(shù)所在方法的參數(shù)類型;encloging_package—返回該參數(shù)所在類的包名;enclosing_project—返回該參數(shù)所在的項目名;enclosing_type—返回該參數(shù)所在類的類名等等。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多