<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 61,  comments - 2033,  trackbacks - 0

    1.統一工作目錄

    2.Interface oriented programming

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

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

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

    4.代碼中不能出現magic number

    //錯誤!!不能出現如此寫法,需要定義為常量
    if(user.getNumber() == 1001 ) {
    //do something
    }
    //正確寫法
    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 snippet
    for(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。大家請設置ide的TAB為4 space

    7.使用StringBuffer來替代String + String

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

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

    8.單語句在IF,While中的寫法. 使用Brackets 來做程序塊區(qū)分

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

    正確寫法:
    //IF
    if ( condition) {
      //code here
    }
    
    //WHILE
    while ( condition ) {
      // code here
    }

    9.Brackets 應當直接在語句后

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

    10.用log4j來做日志記錄,不在代碼中使用System.out

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

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

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

    11.異常處理中日志問題

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

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

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

    正確寫法:
    try{
       //handle something
    } catch (Exception ex) {
       log.error("錯誤描述",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出現的nullpointexception
    //sample code snippet
    String username = …
    …
    if(“mark”.equals(userName)){
    	…
    }

    14.always import classes

    //recommend coding convention
    import 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,加入如下片斷。這樣將可以記錄當前文件的版本以及最后的修改人員

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

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

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

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

    17.domain model或者VO使用注意事項

    檢查數據庫中允許為null的欄位

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

    需要完成VO中的equals,hashCode,toString 三個方法

    18.JSP中約定

    為每個input設定好size同maxlength

    <input type="text" maxlength = "10" size="20"/>
    posted on 2005-12-20 17:07 魚上游 閱讀(1448) 評論(7)  編輯  收藏 所屬分類: 爪哇世界探險


    FeedBack:
    # re: Rule Of Development
    2005-12-20 17:29 | 胡子魚
    # re: Rule Of Development
    2005-12-20 17:46 | Flyingis
    市面上可以買到一個小冊子《Java編程規(guī)范》,英文版的,講的也非常詳細,但僅限于Java編碼部分,不包括JSP等。  回復  更多評論
      
    # re: Rule Of Development
    2005-12-20 17:50 | 胡子魚
    謝謝介紹!  回復  更多評論
      
    # re: Rule Of Development
    2005-12-20 18:06 | ronghao
    不錯,仔細看了一遍,發(fā)現有幾個地方自己未在意過,流汗:)  回復  更多評論
      
    # re: Rule Of Development
    2005-12-20 18:26 | TrampEagle
    確實汗,以前也看過不少規(guī)范文檔,但是都沒有好好遵守,以為自己已經夠規(guī)范的了,但是現在看來還有不少細節(jié)沒有好好重視。一定改!一定要做一個合格的編程人員。  回復  更多評論
      
    # re: Rule Of Development
    2005-12-22 15:46 | 老妖
    汗,看來還要加強規(guī)范  回復  更多評論
      
    # re: Rule Of Development[未登錄]
    2007-03-21 23:45 | 阿蜜果
    呵呵,蠻好,有些東西平時還真沒有注意!  回復  更多評論
      
    <2007年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(82)

    隨筆分類(59)

    文章分類(21)

    相冊

    收藏夾(40)

    GoodSites

    搜索

    •  

    積分與排名

    • 積分 - 1267295
    • 排名 - 22

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 亚洲人成网男女大片在线播放| 日本红怡院亚洲红怡院最新| 亚洲午夜精品一区二区公牛电影院 | 国产精品偷伦视频观看免费| 国产亚洲美女精品久久久2020| 一区视频免费观看| 亚洲成人高清在线| 久久久久久久久久免免费精品| 亚洲人成无码www久久久| 一区二区视频在线免费观看| 亚洲精品国产成人影院| 中文字幕成人免费高清在线视频 | 99久久国产免费中文无字幕| 久久亚洲AV无码精品色午夜麻豆| 国产成人精品免费视频大| 亚洲伊人久久大香线焦| 天天操夜夜操免费视频| 免费精品国自产拍在线播放| 亚洲国产aⅴ综合网| 久久免费视频网站| 18亚洲男同志videos网站| 日韩一区二区a片免费观看| 亚洲AV无码片一区二区三区| 中文字幕精品无码亚洲字| 无码专区AAAAAA免费视频| 亚洲天堂福利视频| 国产又黄又爽又刺激的免费网址| 一区二区三区视频免费观看| 亚洲欧洲在线观看| 最近免费中文字幕大全视频| 在线播放国产不卡免费视频| 亚洲AV成人精品网站在线播放| 韩国免费一级成人毛片| 日韩大片免费观看视频播放| 亚洲大尺度无码无码专区| 99久久这里只精品国产免费| 五月天婷婷精品免费视频| 久久久久亚洲av无码专区导航| 日本特黄a级高清免费大片| A国产一区二区免费入口| 亚洲精品视频观看|