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