說明:為了使邏輯更易懂,也為了可維護(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è)了。
就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è)了。