优化这段代码: public static void CompareValueString modelString devicenameString propertydouble value throws Exception Connection conn = null; Statement stmt = null; try
public static void compareValue(String model, String devicename, String property, double value) throws Exception { String sql = "SELECT * FROM rule_kv WHERE model = ? AND device_name = ?"; try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setString(1, model); stmt.setString(2, devicename);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
String operation = rs.getString("operation");
double defaultvalue = rs.getDouble("defaultvalue");
int operation_num = rs.getInt("operation_num");
modelNumInfor(operation, property, defaultvalue, value);
}
rs.close();
if (("MAJOR".equals(model) || "MINOR".equals(model) || "CRITICAL".equals(model)) && operation_num > 1) {
modelNumMore(value);
a = null;
b = null;
c = null;
d = null;
e = null;
} else {
modelNumOne();
}
} catch (SQLException se) {
se.printStackTrace();
}
}
public static void modelNumOne() { if ("false".equals(a)) { System.out.print("超标(大于)\n"); } if ("false".equals(b)) { System.out.print("超标(小于)\n"); } if ("false".equals(c)) { System.out.print("超标(不小于)\n"); } if ("false".equals(d)) { System.out.print("超标(不等于)\n"); } if ("false".equals(e)) { System.out.print("超标(不大于)\n"); } }
public static void modelNumInfor(String operation, String property, double defaultvalue, double value) { String result = "false"; switch (operation) { case "GREATER": result = (defaultvalue >= value) ? "true" : "false"; a = result; break; case "LESS": result = (defaultvalue <= value) ? "true" : "false"; b = result; break; case "GREATER_OR_EQUAL": result = (defaultvalue > value || defaultvalue == value) ? "true" : "false"; c = result; break; case "NOT_EQUAL": if (defaultvalue != value) { result = "true"; d = result; } else { System.out.print(property + "超标(不等于\n"); } break; case "LESS_OR_EQUAL": result = (defaultvalue < value || defaultvalue == value) ? "true" : "false"; e = result; break; default: System.out.println("Invalid operation: " + operation); } }
public static void modelNumMore(double value) { if (a != null) { if (b != null && a.equals("false") && b.equals("false")) { System.out.println("告警,该值" + value + "在这个大于和小于的范围内:" + "a:" + a + " b:" + b + "\n"); } if (e != null && a.equals("false") && e.equals("false")) { System.out.println("告警,该值" + value + "在这个大于和小于或等于的范围内:" + "a:" + a + " e:" + e + "\n"); } } if (c != null) { if (b != null && c.equals("false") && b.equals("false")) { System.out.println("告警,该值" + value + "在这个大于或等于和小于的范围内:" + "c:" + c + " b:" + b + "\n"); } if (e != null && c.equals("false") && e.equals("false")) { System.out.println("告警,该值" + value + "在这个大于或等于和小于或等于的范围内:" + "c:" + c + " e:" + e + "\n"); } } }
注释: 1.使用try-with-resources语句,自动关闭资源,避免手动关闭资源时的疏忽。 2.使用PreparedStatement代替Statement,提高代码的可读性和安全性。 3.更改方法名,符合Java命名规范。 4.将if语句中的重复代码进行提取,使代码更简洁。 5.去掉了无用的注释,保留了必要的注释。
原文地址: https://www.cveoy.top/t/topic/bH97 著作权归作者所有。请勿转载和采集!