如何讓Java代碼流暢和結(jié)構(gòu)化

字號(hào):

說明:為了使邏輯更易懂,也為了可維護(hù)性更高,應(yīng)該把代碼按模塊分割,而構(gòu)成模塊的類的方法,原則上只能有一個(gè)入口和一個(gè)出口。另外,關(guān)于嵌套的深度和模塊的行數(shù),也應(yīng)該控制在一眼就能看清楚的程度上。
    就Java語言來說,考試大提示:有如下的幾點(diǎn)需要在編碼的時(shí)候特別留意。
    ① switch的case,default部分原則上必須以break終止
    如果不用break來終止的話,必須代之以編碼規(guī)約中既定的注釋。但是,如果swich或者if/else需要反復(fù)進(jìn)行,就需要重新考慮是不是應(yīng)該使用多態(tài)。
    ② 處理途中只允許返回異常,返回方法中不允許把異常和return混雜在一起。
    處理途中發(fā)生的錯(cuò)誤,原則上都要使用異常來返回。例如,在對(duì)參數(shù)進(jìn)行檢查時(shí)發(fā)生異常時(shí),要拋出IllegalArgumentException。在一本程序里,把錯(cuò)誤一會(huì)兒用異常拋出,一會(huì)兒又用返回值(返回ERROR等)返回,往往是程序混亂的根源。必須在設(shè)計(jì)階段明確方針,避免這種混亂。
    ③ finally中,不要寫return。
    例:
    ① switch中需要考慮的要點(diǎn)
    Int dd = 0;
    Switch(status) {
    case ‘ A’ :
    dd = 9;
    break; //OK:正確,用break終止
    case ‘ B’:
    dd++;
    /* FALL THROUGH */ //OK:有意不使用break文,插入了規(guī)定的注釋
    case ‘ C’:
    dd++; //ERROR:沒有插入注釋,明顯是缺少break的Bug
    default:
    dd = -1;
    break; //OK:default里也沒有忘記break
    }
    ② 用異常處理來返回錯(cuò)誤
    If (value == null) {
    throw new IllegalArgumentException(); //OK:不使用return,用拋出異常的方式返回錯(cuò)誤
    }
    ③ 在finally塊中,對(duì)返回值有影響的情況
    Int value = 1;   Try{   return value;   } finally{
    value = 4;
    return value; //ERROR:因?yàn)閒inally塊是肯定會(huì)被執(zhí)行到的,所以在try里本來想
    //返回1,而最終結(jié)果永遠(yuǎn)是4
    }
    //如果在這里寫return的話,出口就只有一個(gè)了。