色欲av一区久久精品_久久综合色综合色88_无码在线观看不卡_色黄视频网站_亚洲国产精品久久久久秋霞66

可別在代碼種寫那么多魔法值了!

時間:2023-05-16

1.前語
重構(gòu)老代碼中遇到了不少相似下面這種寫法:
publicvoidattend(Stringvalue){if(“0”.equals(value)){//todo}elseif(“1”.equals(value)){//todo}else{//todo}
}
腦殼疼!從Java語法上無懈可擊,但是從事務(wù)上卻讓人無法了解其間0和1的含義它們統(tǒng)稱為魔法值。關(guān)于上面的代碼咱們往往需求經(jīng)過上下文揣度出來邏輯,如果是非常復(fù)雜的事務(wù)或許10年前的代碼那就更慘了,搞不好文檔也沒有。為了可讀性,所以咱們要盡量防止出現(xiàn)魔法值。今日就來講幾種防止魔法值的操作。JAVA
2.防止魔法值的一些操作。
一般魔法值都是不常常變化的。關(guān)于魔法值的處理要結(jié)合事務(wù)和作用域。
2.1靜態(tài)常量
如果該值的作用域在一個類中或許同一個包下,一般能夠運(yùn)用靜態(tài)常量來解決。
privatestaticfinalStringFEMALE=”0″;privatestaticfinalStringMALE=”1″;publicvoidattend(Stringvalue){if(FEMALE.equals(value)){//todo}elseif(MALE.equals(value)){//todo}else{//todo}
}
這樣是不是明晰了許多,本來0和1代表的是性別(當(dāng)然需求合作你良好的變量命名習(xí)氣)。
2.2運(yùn)用接口
已然咱們運(yùn)用了靜態(tài)常量那么咱們能夠?qū)⒛Хㄖ捣庋b入接口也是能夠的。
publicinterfaceGender{
StringFEMALE=”0″;
StringMALE=”1″;
}
2.3運(yùn)用枚舉
但是接口的含義在于提供抽象的功用而不是存儲一些常量值,明顯違反了接口規(guī)劃的初衷。所以jdk1.5引入了枚舉類型enum。
publicenumGenderEnum{
FEMALE,
MALE
}
許多情況這種寫法就夠用了,你能夠經(jīng)過GenderEnum.MALE.ordinal()獲取對應(yīng)枚舉的數(shù)字序號,也能夠經(jīng)過GenderEnum.MALE.name()獲取對應(yīng)枚舉的字符串稱號。他們大多數(shù)情況下都能夠用來進(jìn)行一些邏輯標(biāo)識。但是滿足不了咱們上面開始的規(guī)劃,咱們需求來改造一下枚舉類的結(jié)構(gòu)函數(shù)。
publicenumGenderEnum{
FEMALE(“0”),
MALE(“1”);privatefinalStringvalue;
GenderEnum(Stringvalue){this.value=value;
}publicStringvalue(){returnthis.value;
}
}
這樣改寫之后咱們就能經(jīng)過value()方法拿到具體的值了。
咱們給自己再增加點(diǎn)需求,以到達(dá)你的枚舉更加友愛的可讀性。
publicenumGenderEnum{
UNKNOWN(“-1″,”不知道”),
FEMALE(“0″,”女人”),
MALE(“1″,”男性”);privatefinalStringvalue;privatefinalStringdescription;
GenderEnum(Stringvalue,Stringdescription){this.value=value;this.description=description;
}publicStringvalue(){returnthis.value;
}publicStringdescription(){returnthis.description;
}
}
description值不但能夠幫助咱們知道該枚舉的實(shí)際代表含義,甚至能夠作為一種闡明返回給前端事務(wù)。
小貼士:枚舉盡量不要運(yùn)用中文聲明,如FEMALE直接聲明為女人。別的枚舉是單例的,因而無法運(yùn)用clone和反序列化。
3.總結(jié)
今日咱們了解了怎么優(yōu)雅處理編碼中的魔法值,特別是枚舉計劃。希望對你有用。

文章標(biāo)簽:

Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號

與項(xiàng)目經(jīng)理交流
掃描二維碼
與項(xiàng)目經(jīng)理交流
掃描二維碼
與項(xiàng)目經(jīng)理交流
ciya68