posts - 297,  comments - 1618,  trackbacks - 0
          昨天轉(zhuǎn)悠到一blog,看到一篇好文。
          原文出處:http://www.aygfsteel.com/bibi/archive/2007/03/21/24819.html

          1.統(tǒng)一工作目錄

          2.Interface oriented programming

          在定義參數(shù)類(lèi)型,或者方法返回類(lèi)型,使用Map或者List,不用Hashmap or ArrayList。只有在構(gòu)造時(shí)才允許出現(xiàn)Hashmap或者ArrayList
          public List getAllProduct(); //正確。定義返回類(lèi)型
          public ArrayList getAllProduct(); //錯(cuò)誤!!定義返回類(lèi)型
          public List queryByCritical(Map criticals); //定義參數(shù)類(lèi)型
          public List queryByCritical(HashMap criticals); //錯(cuò)誤!!定義參數(shù)類(lèi)型
          List result = null;//定義類(lèi)型的時(shí)候未List
          result = new ArrayList();//只有構(gòu)造時(shí)出現(xiàn)的實(shí)現(xiàn)類(lèi)
          
          Map result = null;//定義類(lèi)型的時(shí)候未Map
          result = new HashMap();//只有構(gòu)造時(shí)出現(xiàn)的實(shí)現(xiàn)類(lèi)

          3.變量命名不允許出現(xiàn)下劃線,除了常量命名時(shí)用下劃線區(qū)分單詞

          String user_name= null;//錯(cuò)誤!!! 即使數(shù)據(jù)庫(kù)中這種風(fēng)格
          String userName = null;//正確寫(xiě)法
          int CET_SIX=6;//常量命名時(shí)用下劃線區(qū)分單詞,字符全部大寫(xiě)

          4.代碼中不能出現(xiàn)magic number

          //錯(cuò)誤!!不能出現(xiàn)如此寫(xiě)法,需要定義為常量if(user.getNumber() == 1001 ) {
          //do something
          }
          //正確寫(xiě)法static?final?int ADMINISTRATOR_ROLE_NUMBER = 1001;
          static?final?int MIN_WIDTH = 4;
          static?final?int MAX_WIDTH = 999;
          static?final?int GET_THE_CPU = 1
          
          if(user.getNumber() == ADMINISTRATOR_ROLE_NUMBER ) {
          //do something
          }

          5.不在循環(huán)中定義變量

          //sample code snippetfor(int i=0;i<10;i++){
              ValueObject vo = new ValueObject();
          }
          //recommend this style
          ValueObject vo = null;
          for(int i=0;i<10;i++){
             vo = new ValueObject();
          }

          6.NOT TAB,采用4 spaces。大家請(qǐng)?jiān)O(shè)置ide的TAB為4 space

          7.使用StringBuffer來(lái)替代String + String

          不正確寫(xiě)法:
          //sample code snippetString sql =”INSERT INTO test (”;
          
          Sql+=”column1,column2,values(”
          Sql+=”1,2)”

          正確寫(xiě)法:
          StringBuffer sql = new?StringBuffer();
          sql.append(”INSERT INTO test (”);
          sql.appdend(”column1,column2,values(”);
          sql.append(”1,2)”);

          8.單語(yǔ)句在IF,While中的寫(xiě)法. 使用Brackets 來(lái)做程序塊區(qū)分

          不正確寫(xiě)法:
          if ( condition) //single statement, code here
          while
          ( condition ) //single statement, code here

          正確寫(xiě)法:
          //IFif ( condition) {
            //code here
          }
          
          //WHILEwhile ( condition ) {
            // code here
          }

          9.Brackets 應(yīng)當(dāng)直接在語(yǔ)句后

          if ( foo ) {
              // code here
          }
          
          try {
              // code here
          } catch (Exception bar) {
              // code here
          } finally {
              // code here
          }
          
          while ( true ) {
              // code here
          }

          10.用log4j來(lái)做日志記錄,不在代碼中使用System.out

          錯(cuò)誤寫(xiě)法:
          System.out.println(" debug 信息");

          正確寫(xiě)法:
          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;
          
          private?static Log logger = LogFactory.getLog(SQLTable.class);
          
          logger.debug("debug 信息"); //注意這里沒(méi)有涉及字符串操作
          //涉及字符串操作或者方法調(diào)用的,需要用
          logger.isDebugEnable()
          來(lái)做判斷
          if(logger.isDebugEnable()){ logger.debug(String1 + string 2 + string3 + object.callMethod()); }

          如果程序中需要輸出的信息為非調(diào)試信息,用logger.info來(lái)做輸出
          logger.info(""Can't find column to build index. ColName=" + columnName");

          11.異常處理中日志問(wèn)題

          錯(cuò)誤寫(xiě)法1:
          try{
             //handle something
          } catch (Exception ex) {
             //do nothing. 請(qǐng)確定該exception是否可以被忽略!!!!
          }

          錯(cuò)誤寫(xiě)法2:
          try{
             //handle something
          } catch (Exception ex) {
            ex.printStackTrace ();//不在程序中出現(xiàn)如此寫(xiě)法!!
          }

          錯(cuò)誤寫(xiě)法3:
          try{
             //handle something
          } catch (Exception ex) {
            log.error(ex);//這樣將僅僅是輸出ex.getMessage(),不能輸出stacktrace
          }

          正確寫(xiě)法:
          try{
             //handle something
          } catch (Exception ex) {
             log.error("錯(cuò)誤描述",ex);//使用log4j做異常記錄
          }

          12.Release Connection ,ResultSet and Statement

          //sample code snippet
          Connection con = null;
          Statement st = null;
          ResultSet rs = null;
          
          try {
            con = JNDIUtils.getConnection();
            st = …
            rs = …
          } finally {
                  JDBCUtil.safeClose(rs);//close resultset ,it is optional
                  JDBCUtil.safeClose(st);//close statement after close resultset, it is optional
                  JDBCUtil.safeClose(con);//make sure release it right now
          }

          13.Replace $variableName.equals(’string’) with ‘string’.equals($variableName)

          減少由于匹配的字符為null出現(xiàn)的nullpointexception
          //sample code snippetString username = …
          …
          if(“mark”.equals(userName)){
          	…
          }

          14.always import classes

          //recommend coding conventionimport java.util.HashMap;
          import java.util.Map;
          import java.util.List;
          
          //import java.util.*; 
          NOT!!
          //We can use eclipse,right click, choose Source -> Organize Imports
          //hotkey:Ctrl+Shift+O

          15.注釋

          程序header,加入如下片斷。這樣將可以記錄當(dāng)前文件的版本以及最后的修改人員

          java,jsp中加入
          /**
           * $Id: $
           *          
           */

          xml中加入
          <?xml version="1.0" encoding="UTF-8"?><!--
          $Id:$ 
          -->

          16.在有issue出,加入//TODO 來(lái)記錄,以便在task中可以方便記錄未完成部分

          //sample code snippet//TODO issue: the data format, should be fixed

          17.domain model或者VO使用注意事項(xiàng)

          檢查數(shù)據(jù)庫(kù)中允許為null的欄位

          對(duì)從數(shù)據(jù)庫(kù)中取出的domain model或者VO,如果數(shù)據(jù)庫(kù)中允許為null,使用有必要檢查是否為null
          CODE SNIPPET
          //user table中的該字段允許為null,使用時(shí)就需要去check,否則可能出現(xiàn)nullpoint exception
          if(user.getDescription()!=null) { //do something }

          需要完成VO中的equals,hashCode,toString 三個(gè)方法

          18.JSP中約定

          為每個(gè)input設(shè)定好size同maxlength

          <input type="text" maxlength = "10" size="20"/>
          posted on 2007-03-22 11:03 阿蜜果 閱讀(471) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): Java


          FeedBack:
          # re: Rule Of Development[轉(zhuǎn)]
          2008-01-08 12:50 | hbyufan@hotmail.com
          受教了  回復(fù)  更多評(píng)論
            
          <2007年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

                生活將我們磨圓,是為了讓我們滾得更遠(yuǎn)——“圓”來(lái)如此。
                我的作品:
                玩轉(zhuǎn)Axure RP  (2015年12月出版)
                

                Power Designer系統(tǒng)分析與建模實(shí)戰(zhàn)  (2015年7月出版)
                
               Struts2+Hibernate3+Spring2   (2010年5月出版)
               

          留言簿(263)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          相冊(cè)

          關(guān)注blog

          積分與排名

          • 積分 - 2295929
          • 排名 - 3

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 洛川县| 乌海市| 四会市| 浙江省| 仙桃市| 康平县| 宣城市| 镇安县| 巴林右旗| 双流县| 西平县| 南宫市| 灵石县| 济阳县| 眉山市| 荔浦县| 游戏| 全州县| 刚察县| 阜新| 泸西县| 买车| 天水市| 长子县| 盐池县| 比如县| 遂平县| 广灵县| 洛扎县| 辉县市| 德令哈市| 潞西市| 平阴县| 时尚| 巩义市| 麻江县| 静乐县| 新丰县| 台南县| 浑源县| 乐昌市|