java代码中有很多if判断语句,如果优化,或者用啥设计模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java代码中有很多if判断语句,如果优化,或者用啥设计模式相关的知识,希望对你有一定的参考价值。

参考技术A 1)提前return
if (condition)
// do something
else
// do something

上面的代码可以写成
if (!condition)
return xxx;

// do something
2)策略模式
根据不同的参数走不同的逻辑
if (strategy.equals("fast"))
// 快速执行
else if (strategy.equals("normal"))
// 正常执行
else if (strategy.equals("smooth"))
// 平滑执行
else if (strategy.equals("slow"))
// 慢慢执行
参考技术B 在每个case的后面的值都应该加上单引号啊,例如,'1'。因为你检查的变量时char型的,所以类型要匹配。 参考技术C 这个具体情况具体处理。一个参考建议是判是改成判否。比如:
if (boolean-expression1)
if(boolean-expression2)
doSomething();



改成
if (!boolean-expresssion1)
return;


if (boolean-expression2)
doSomething();

本回答被提问者采纳
参考技术D 看看能不能转化用switch-case结构 第5个回答  2017-05-12 得根据实际的需求、逻辑处理了

~~~~~~~~~~~~~~

if/else的优化方法

if/else的优化方法

  1if/else 语句块的顺序

    首先处理正逻辑而不是负逻辑

    先处理简单的情况

    先处理有趣的或者是可疑的情况

 

  2)通过提早返回减少嵌套

 

  3)总结变量

    用一个短很多的名字来代替一大块代码,这就是总结变量。

    使用德摩根定理,分解复制的判断逻辑

    拆分巨大的语句,让语句更容易快速阅读

 

 

 

  4)分析函数(或代码块)画出逻辑树

    逻辑树是整合1)和2)两个部分,为了理清复杂if语句逻辑二产生的。

    逻辑树的结构与哈夫曼树类似

技术分享 

    逻辑树规则:(模块的定义:每一个if/else的分支即为一个模块)

      1.每个模块都是一个根结点,每一个根结点都会结束函数运行。

      2.同等级的模块(即if语句的正反两面),无子模块的模块(内部无if语句)优先级高于拥有子模块的模块(内部嵌套if语句)

      3.同等级和同条件(两个模块都拥有子模块或者都没有子模块)的情况下,使用率高的模块优先级高于使用率低的

      4.若模块中包含子模块,子模块的优先级高于父模块。

 

     如下程序

 

if(user_result == SUCCESS ){

  if( permission_result != SUCCESS){

    reply.WriteErrors("error reading permissions");

    reply.Done();

    return;

  }

  reply.WriteErrors("");

}else{

  reply.WriteErrors(user_result);

}

reply.Done();
return;

 

 

     可将程序分为绿、红、紫三模块,蓝色是前置条件,黑色是共有部分。

   根据上述规则

    1.根据规则2,紫、红两个属于同等级模块,但是由于红色模块中包含一个子模块,所以红色模块优先级低于紫色模块

    2.根据规则4,绿色模块属于红色模块子模块,所以绿色模块优先级高于红色模块

    3.根据1,2,函数的优先级排列由高到低为:紫色>绿色>红色

   

   结果为:

 

if(user_result != SUCCESS){

  reply.WriteErrors(user_result);

  reply.Done();

  return;

}

 
if(permission_result != SUCCESS){

  reply.WriteErrors(permission_result);

  reply.Done();

  return;

}


reply.WriteErrors("");

reply.Done();
return;

 



以上是关于java代码中有很多if判断语句,如果优化,或者用啥设计模式的主要内容,如果未能解决你的问题,请参考以下文章

if/else的优化方法

java用if语句要怎么判断一个字符串里是不是有逗号?

Java 控制语句

SQL里if语句和case语句有啥区别吗?哪个使用更高效?就是查询更优化?

一万个if..........else....语句,请问如何去优化它。。。。以提升性能效率

关于c++中的assert语句