如果条件和多个运算符,我如何重构多个,以便我可以减少java中的代码复杂性

时间:2017-04-06 07:22:31

标签: java memory code-complexity

我有一个java代码,我正在调用数据库函数进行数据插入。 函数可能会根据Database中的异常返回错误代码。为了在屏幕上显示这些错误,我写了下面的代码。


255.255.255.0  the_name

我的要求是减少多个运算符,如果条件,if语句中的运算符不超过3个,使用较少内存的轻量代码。

请建议是否有人有任何创造性的解决方案。

4 个答案:

答案 0 :(得分:3)

for (int i=1; i<=6; i++){
    String s = "RUREF0000" + i;
    //Define your error
    if(s.equals(DBerrorCode)){
            throw new DataUpdateException(your error);
    }
对于i = [27,30]

相同

最后你可以为案件设置一个if条件(i&lt; 1,i&gt; 6和i&lt; 27,i&gt; 30) 作为默认错误

您也可以定义切换案例https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

但这不会减少您的代码长度。这取决于你的任务

答案 1 :(得分:2)

我会使用地图。

map.put("RUREF00001",ErrorRUREF00001);
map.put("RUREF00002",ErrorRUREF00002);
map.put("RUREF00003",ErrorRUREF00004);

然后你只需写一行

throw new DataUpdateException(map.get(DBerrorCode));

附注:Java变量名称以小写字母开头。

答案 2 :(得分:0)

事实上,您可以像其他答案一样使用Map

假设传递给ErrorRUREF00001的参数(例如DataUpdateException)是String

Map<String, String> errorMap = new HashMap<>();

errorMap.put("RUREF00001", ErrorRUREF00001);
// populate other values ....

然后你可能有一个检查映射消息的方法,如果找到一个,则使用该方法,如果没有找到则使用另一个值:

public void manageError(final String dbErrorCode) {

    if (errorMap.containsKey(dbErrorCode)) {

        throw new DataUpdateException(errorMap.get(dbErrorCode));
    } else {

        throw new DataUpdateException(DATA_INSERT_ERROR);
    }
}

最后代替您if else语句,只需致电

   manageError(DatabaseReturnErrorCode);

答案 3 :(得分:0)

如果省略onPause()语句,您可以使用Enum

您的逻辑应如下所示:

  • 获取字符串代码值
  • 使用if-else
  • 迭代枚举值
  • 如果字符串值匹配某些错误代码 - &gt; Enum.values()使用此代码,例如参数
  • 如果没有匹配则抛出默认错误。

这是一个小型演示:

throw new Exception()

因此,您的所有enum ErrorCodes { RUREF_00001("RUREF00001"), RUREF_00002("RUREF00002"), RUREF_00003("RUREF00003"); // ... private String errorName; ErrorCodes(String errorName) { this.errorName = errorName; } public String getErrorName() { return errorName; } } public class ErrorHandler { public static void main(String[] args) { String dbErrorCode = "ruref00003"; // get the error code from Database for (ErrorCodes code : ErrorCodes.values()) { if (code.getErrorName().equalsIgnoreCase(dbErrorCode)) { throw new DataUpdateException(dbErrorCode); } } //default error throw new DataUpdateException(DATA_INSERT_ERROR); } } 语句都将被替换为几行:

if-else

这是更优雅的解决方案。