如题,下面的代码该如何重构?sonar检测出来的复杂度有60多,标准是不能超过10,大家给点意见。 private String calculateVehicleClassCode(PolicySummary policySummary){
String vehicleTypeCd = getVehicleTypeCd(policySummary);
String coverageTypeCd = getCoverageTypeCd(policySummary);
String vehicleUsageCd = getVehicleUsageCd(policySummary);
Boolean vintageClassicInd = getVintageClassicInd(policySummary);
Boolean vintageClassicOrNotUsedDailyInd = getVintageClassicOrNotUsedDailyInd(policySummary); String vehicleClassCode = null;
if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals(FULL)
&& (vintageClassicInd != null) && vintageClassicInd
&& (vintageClassicOrNotUsedDailyInd != null) && (!vintageClassicOrNotUsedDailyInd)) {
vehicleClassCode = "PC";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals(FULL)
&& (vintageClassicInd != null) && (!vintageClassicInd)) {
vehicleClassCode = "PC";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals(FULL)
&& (vintageClassicInd != null) && vintageClassicInd
&& (vintageClassicOrNotUsedDailyInd != null) && vintageClassicOrNotUsedDailyInd) {
vehicleClassCode = "VN";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals(COML) && coverageTypeCd.equals(FULL)) {
vehicleClassCode = "CC";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals(COML) && coverageTypeCd.equals("TPFT")) {
vehicleClassCode = "CL";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals(COML) && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TC";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("REST")) {
vehicleClassCode = "RS";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals("TPFT")) {
vehicleClassCode = "PL";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TP";
} else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TR";
} else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "PT";
} else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals(COML) && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TT";
}else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals(COML)) {
vehicleClassCode = "CT";
}else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals("FARO") && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TF";
} else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals("FARO")) {
vehicleClassCode = "FT";
} else if (vehicleTypeCd.equals("CA") && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "CV";
} else if (vehicleTypeCd.equals("TR") && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "TL";
} else if (vehicleTypeCd.equals("TR") && vehicleUsageCd.equals(COML)) {
vehicleClassCode = "CI";
} else if (vehicleTypeCd.equals("MC") && vehicleUsageCd.equals("PP") && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TM";
} else if (vehicleTypeCd.equals("MC") && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "MC";
} else if (vehicleTypeCd.equals("MC") && vehicleUsageCd.equals("OFRD")) {
vehicleClassCode = "OM";
} else if (vehicleTypeCd.equals("MC") && vehicleUsageCd.equals("REST")) {
vehicleClassCode = "RM";
} else if (vehicleTypeCd.equals("MH") && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "MH";
} else if (vehicleTypeCd.equals("TC") && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "PR";
}
return vehicleClassCode;
}
String vehicleTypeCd = getVehicleTypeCd(policySummary);
String coverageTypeCd = getCoverageTypeCd(policySummary);
String vehicleUsageCd = getVehicleUsageCd(policySummary);
Boolean vintageClassicInd = getVintageClassicInd(policySummary);
Boolean vintageClassicOrNotUsedDailyInd = getVintageClassicOrNotUsedDailyInd(policySummary); String vehicleClassCode = null;
if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals(FULL)
&& (vintageClassicInd != null) && vintageClassicInd
&& (vintageClassicOrNotUsedDailyInd != null) && (!vintageClassicOrNotUsedDailyInd)) {
vehicleClassCode = "PC";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals(FULL)
&& (vintageClassicInd != null) && (!vintageClassicInd)) {
vehicleClassCode = "PC";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals(FULL)
&& (vintageClassicInd != null) && vintageClassicInd
&& (vintageClassicOrNotUsedDailyInd != null) && vintageClassicOrNotUsedDailyInd) {
vehicleClassCode = "VN";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals(COML) && coverageTypeCd.equals(FULL)) {
vehicleClassCode = "CC";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals(COML) && coverageTypeCd.equals("TPFT")) {
vehicleClassCode = "CL";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals(COML) && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TC";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("REST")) {
vehicleClassCode = "RS";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals("TPFT")) {
vehicleClassCode = "PL";
} else if (vehicleTypeCd.equals(CAR) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TP";
} else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals("PP") && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TR";
} else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "PT";
} else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals(COML) && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TT";
}else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals(COML)) {
vehicleClassCode = "CT";
}else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals("FARO") && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TF";
} else if (vehicleTypeCd.equals(TRUCK01) && vehicleUsageCd.equals("FARO")) {
vehicleClassCode = "FT";
} else if (vehicleTypeCd.equals("CA") && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "CV";
} else if (vehicleTypeCd.equals("TR") && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "TL";
} else if (vehicleTypeCd.equals("TR") && vehicleUsageCd.equals(COML)) {
vehicleClassCode = "CI";
} else if (vehicleTypeCd.equals("MC") && vehicleUsageCd.equals("PP") && coverageTypeCd.equals( TPO)) {
vehicleClassCode = "TM";
} else if (vehicleTypeCd.equals("MC") && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "MC";
} else if (vehicleTypeCd.equals("MC") && vehicleUsageCd.equals("OFRD")) {
vehicleClassCode = "OM";
} else if (vehicleTypeCd.equals("MC") && vehicleUsageCd.equals("REST")) {
vehicleClassCode = "RM";
} else if (vehicleTypeCd.equals("MH") && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "MH";
} else if (vehicleTypeCd.equals("TC") && vehicleUsageCd.equals("PP")) {
vehicleClassCode = "PR";
}
return vehicleClassCode;
}
解决方案 »
- 菜鸟请进
- java在linux下的问题
- java socket项目打包成可运行的JAR包!!!!!
- 服务器端关闭Socket的疑问
- 请高手指点,如何利用Java语言编写一个字符串数组,并将结果打印出来。
- swing 高手请进,帮帮忙啊………………!!
- Bruce Eckel的《Thinking in Java》的第三版和第二版相比有哪些变化?
- Applet运行中更改jButton的Icon属性,有闪烁感,如何用双缓冲或者其他方法去除?
- 如何得分
- 关于java中Int等类型装箱时发生的奇怪现象
- java语法
- 请问Jtable里面的内容怎么换行,是在编辑的时候换行、setDefaultRenderer设置的只有在退出编辑状态后才可以
private static final String VEHICLE_CLASS = "VehicleClass";
private static final String CAR = "CAR";
private static final String FULL = "FULL";
private static final String COML = "COML";
private static final String TPO = "TPO";
private static final String TRUCK01 = "TRUCK01";
想到一种方法,根据if中条件的个数来分类,然后新建类做为key,具体if的返回结果为value来处理。例如if中有2个条件的就使用:
private static Map<VehicleTypeAndUsage,String> VehicleTypeAndUsageMap = new HashMap<VehicleTypeAndUsage,String>();
static{
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage(CAR,"REST"),"RS");
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage(TRUCK01,"PP"),"PT");
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage(TRUCK01,COML),"CT");
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage(TRUCK01,"FARO"),"FT");
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage("CA","PP"),"CV");
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage("TR","PP"),"TL");
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage("TR",COML),"CI");
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage("MC","PP"),"MC");
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage("MC","OFRD"),"OM");
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage("MC","REST"),"RM");
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage("MH","PP"),"MH");
VehicleTypeAndUsageMap.put(new VehicleTypeAndUsage("TC","PP"),"PR");
} private String populateVehicleClassCodeByTypeAndUsagecd(String vehicleTypeCd, String vehicleUsageCd){
String vehicleClassCode = null;
if(vehicleTypeCd != null && vehicleUsageCd != null) {
vehicleClassCode = VehicleTypeAndUsageMap.get(new VehicleTypeAndUsage(vehicleTypeCd, vehicleUsageCd));
}
return vehicleClassCode;
}不知道大家有没有更好的方法。
class VehicleTypeAndUsage{
private String vehicleTypeCd;
private String vehicleUsageCd;
public VehicleTypeAndUsage(String vehicleTypeCd, String vehicleUsageCd){
this.vehicleTypeCd = vehicleTypeCd;
this.vehicleUsageCd = vehicleUsageCd;
} @Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; VehicleTypeAndUsage that = (VehicleTypeAndUsage) o; if (vehicleTypeCd != null ? !vehicleTypeCd.equals(that.vehicleTypeCd) : that.vehicleTypeCd != null)
return false;
if (vehicleUsageCd != null ? !vehicleUsageCd.equals(that.vehicleUsageCd) : that.vehicleUsageCd != null)
return false; return true;
} @Override
public int hashCode() {
int result = vehicleTypeCd != null ? vehicleTypeCd.hashCode() : 0;
result = 31 * result + (vehicleUsageCd != null ? vehicleUsageCd.hashCode() : 0);
return result;
}
}