用多个If else条件缩短

  • 本文关键字:条件 else If java
  • 更新时间 :
  • 英文 :


我正在尝试缩短if-else语句,我尝试了一些方法,但仍然太长了。我写的原始脚本显示在下面

public static SqlType getSqlType(String metadata) {
System.out.println("metadata info " + metadata);
if (metadata.startsWith("string") || metadata.startsWith("char") || metadata.startsWith("varchar")) {
log.logger.info(metadata + " to " + "varchar");
return SqlType.text();
}
if (metadata.startsWith("bigint")) {
log.logger.info(metadata + " : " + "bigint");
return SqlType.bigInt();
}
if (metadata.startsWith("int")) {
log.logger.info(metadata + " : " + "int");
return SqlType.integer();
}
if (metadata.startsWith("smallint") || metadata.startsWith("tinyint")) {
log.logger.info(metadata + " : " + "tinyint");
return SqlType.smallInt();
}
if (metadata.startsWith("boolean")) {
log.logger.info(metadata + " : " + "boolean");
return SqlType.bool();
}
if (metadata.startsWith("float") || metadata.startsWith("double") || metadata.startsWith("decimal")) {
log.logger.info(metadata + " : " + "decimal");
return SqlType.doublePrecision();
}
if (metadata.startsWith("timestamp")) {
log.logger.info(metadata + " : " + "varchar");
return SqlType.timestamp();
} else {
log.logger.log(Level.WARNING,"Datatype is not declared in java class and is convert as text : " + metadata );
return SqlType.text();
}
}

我尝试的**第一个**方法如下
if(metadata.startsWith("string") || metadata.startsWith("char") || metadata.startsWith("varchar")){return SqlType.text();}
if(metadata.startsWith("int")){return SqlType.bigInt();}

使用这种方法不会使我包括logger,因为它也太冗长了。


我尝试的第二种方法是使用如下三元
return metadata.startsWith("string") || metadata.startsWith("char") || metadata.startsWith("varchar") ? return SqlType.text();
: metadata.startsWith("string") || metadata.startsWith("char") || metadata.startsWith("varchar") ? SqlType.text();

然而,在第二种方法中,如何添加记录器文件,如上面的示例脚本所示。在条件下编码多个if else的最佳实践或方法是什么

如果条件取决于metadata和您想要在中处理的方式,请简化。但是您可以使用StringUtils提高代码的可读性并使其变得简单

您的代码:

if (metadata.startsWith("float") || metadata.startsWith("double") || metadata.startsWith("decimal")) {
log.logger.info(metadata + " : " + "decimal");
return SqlType.doublePrecision();
}

StringUtils:

if (StringUtils.startsWithAny(metadata, "float", "double", "decimal")) {
return SqlType.doublePrecision();
}

最新更新