4
需要優化驗證碼:(Java)的if語句優化
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import javax.ws.rs.CookieParam;
import javax.ws.rs.FormParam;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.MatrixParam;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;
...
private String valueParam(Annotation a) {
String value = "";
if (a.annotationType() == QueryParam.class) {
value = ((QueryParam) a).value();
} else if (a.annotationType() == PathParam.class) {
value = ((PathParam) a).value();
} else if (a.annotationType() == CookieParam.class) {
value = ((CookieParam) a).value();
} else if (a.annotationType() == HeaderParam.class) {
value = ((HeaderParam) a).value();
} else if (a.annotationType() == MatrixParam.class) {
value = ((MatrixParam) a).value();
} else if (a.annotationType() == FormParam.class) {
value = ((FormParam) a).value();
}
return value;
}
SonarQube埋怨這種方法的複雜性。
改變並不那麼容易,因爲我們需要在獲取其值之前檢查註釋類型!
注意:陷阱位於沒有value()方法的Annotation接口上。
P.S. :根據此代碼對這個example(代碼示例4)
爲什麼不使用一個開關?圍繞annotationType建立一個開關,每個類都有一個案例 – CubeJockey
@Trobbins我相信SONAR在使用開關後仍然會抱怨。 – CKing
@bot啊好的。 – CubeJockey