編寫程序有時(shí)會(huì)用到有序常量。一個(gè)常見的情況是對(duì)命令行參數(shù)進(jìn)行處理,如下的代碼片段:
public class A {
…….
private
static final int PARAM_1 = 0;
private
static final int PARAM_2 = 1;
private
static final int PARAM_3 = 2;
private
static final int PARAM_4 = 3;
private
static final int PARAMS_COUNT = 4;
…….
public
static void main(String[] args) {
if
(args.length != PARAMS_COUNT) {
System.out.println("Usage:
program <Param_1> <Param_2> <Param_3> <Param_3>
<Param_4>");
System.exit(1);
}
callFun1(args[PARAM_1],
args[PARAM_2]);
callFun2(args[PARAM_1],
args[PARAM_3], args[PARAM_4]);
}
}
PARAM_1到PARAM_4就是我這里說的有序產(chǎn)量,這樣的常量通常被賦予一段順序的值。但如果像上面這段代碼的寫法,將會(huì)在程序維護(hù)時(shí)帶來一些小麻煩。比如增加一個(gè)新的產(chǎn)量PARAM_5,除了需要定義型的常量以外,還需要調(diào)整PARAMS_COUNT的值。如果需要在原序列中插入一個(gè)新的常量,那就更麻煩了,不僅需要調(diào)整PARAMS_COUNT的值,還需要調(diào)整插入位置之后的常量的值。如在上面的代碼中插入一個(gè)常量PARAM_NEW到PARAM_3的位置:
…….
private
static final int PARAM_1 = 0;
private
static final int PARAM_2 = 1;
private
static final int PARAM_NEW = 2 // New Constant
private
static final int PARAM_3 = 3; // Need Changed
private
static final int PARAM_4 = 4;
// Need Changed
private
static final int PARAMS_COUNT = 5; // Need
Changed
…….
其實(shí)我們只需要引入一個(gè)靜態(tài)變量就可以比較好的解決這個(gè)問題。下面是修改后的代碼:
public class A {
…….
private
static int PARAM_INDEX = 0;
private
static final int PARAM_1 = PARAM_INDEX++;
private
static final int PARAM_2 = PARAM_INDEX++;
private
static final int PARAM_3 = PARAM_INDEX++;
private
static final int PARAM_4 = PARAM_INDEX++;
private
static final int PARAMS_COUNT = PARAM_INDEX;
…….
}
在新的代碼中,我們引入了一個(gè)變量PARAM_INDEX,并賦予一個(gè)初始值(這里是零),借助于對(duì)這個(gè)變量,我們消除了硬編碼常量的值帶來的那些弊端。同樣插入一個(gè)新的常量,現(xiàn)在我們只需要增加新的內(nèi)容,而不需要改變?cè)械拇a了。代碼如下:
public class A {
…….
private
static int PARAM_INDEX = 0;
private
static final int PARAM_1 = PARAM_INDEX++;
private
static final int PARAM_2 = PARAM_INDEX++;
private
static final int PARAM_NEW = PARAM_INDEX++;
// New Constant
private
static final int PARAM_3 = PARAM_INDEX++;
private
static final int PARAM_4 = PARAM_INDEX++;
private
static final int PARAMS_COUNT = PARAM_INDEX;
…….
}
posted on 2007-04-10 17:19
Jini 閱讀(1547)
評(píng)論(4) 編輯 收藏 所屬分類:
JDK相關(guān)