代码中怎么避免if else啊

bolink5 2010-08-18 03:19:29
在开发中 if else 实在是多啊
刚敲完代码,看了下 又发现N多个 if else啊
希望大家给个好的建议啊。
有段时间没发帖了,顺便散点分、、、
...全文
1314 72 打赏 收藏 转发到动态 举报
写回复
用AI写文章
72 条回复
切换为时间正序
请发表友善的回复…
发表回复
雨天wxp 2011-11-22
  • 打赏
  • 举报
回复
if () {
if () {
if () {
}else {}
}else {
}
}

解决:
写一个方法:
public static Integer isArrBoolean(boolean[] bs){
Integer flag = 0;
for(int i=0;i<bs.length;i++) {
if (!bs[i]) break;
flag++;
}
return flag;
}

程序中调用:
boolean b1 = Utils.toNa(map.get("opId")) >0;
boolean b2 = Utils.toNa(map.get("roleId")) >0;
boolean b3 = Utils.toNa(map.get("topId")) >0;
boolean[] bs = {b1,b2,b3};
int flag = Utils.isArrBoolean(bs);

switch (flag) {
case 1: sb.append(" and m.operator.opId =").append((Integer)(map.get("opId")));break;
case 2: sb.append(" and (m.role.roleId =").append((Integer)(map.get("roleId")));
sb.append(" or m.operator.opId =").append((Integer)(map.get("opId"))).append(")");
break;
case 3: sb.append(" and (m.role.roleId =").append((Integer)(map.get("roleId")));
sb.append(" or m.toOper.opId =").append((Integer)(map.get("topId")));
sb.append(" or m.operator.opId =").append((Integer)(map.get("opId"))).append(")");
break;
default: break;
}
jerryfeng13 2011-11-03
  • 打赏
  • 举报
回复
我是来学习的,if else过多,就用些return,和switch吧。
zhoupin 2010-08-24
  • 打赏
  • 举报
回复
学习了
luojihaidao 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 soli11722984 的回复:]
enum
[/Quote]

比较固定的用。
zhfaston 2010-08-24
  • 打赏
  • 举报
回复
我是来学习的
安心逍遥 2010-08-24
  • 打赏
  • 举报
回复
能用条件三元运算符
用switch
soft53ears 2010-08-24
  • 打赏
  • 举报
回复
太多if else的情况,用三目运算符很难阅读
bolink5 2010-08-23
  • 打赏
  • 举报
回复
呵呵 谢谢你们的回复啊 可惜已经结贴了啊
longshen131x 2010-08-23
  • 打赏
  • 举报
回复
用swith
East271536394 2010-08-23
  • 打赏
  • 举报
回复
设计模式:
switch 用Adapter


设计模式
bidiya 2010-08-23
  • 打赏
  • 举报
回复
那用case..
max_ya 2010-08-23
  • 打赏
  • 举报
回复
如果没有了如果,但是还有很多但是
bolink5 2010-08-22
  • 打赏
  • 举报
回复
这几天玩了下 忘结贴了
谢谢大家的建议啊
bolink5 2010-08-20
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 hudie1234567 的回复:]

曾经听人说过,如果你的代码中,有很多的if...else的话,说明你的代码面向对象不好!或许是认识肤浅吧,我还是认为if和else都是逻辑判断必须的!楼上有几位兄弟说的,用switch替换,个人和if一样的!没有什么本质的区别!
[/Quote]

是啊 代码写了几年了啊 工作2年了啊 可发现代码还是if else啊 看起来很不爽 啊
气愤啊 大家有好的方法再说说吧 分可以再加的
izard999 2010-08-20
  • 打赏
  • 举报
回复
条件判断无法避免的, 充其量只是换下形式而已.!
if else 无所谓.! 但是尽量不要嵌套, 嵌套多了把你自己都套晕了的
LS的说的if return是个比较好避免嵌套的解决方案!
steel1985 2010-08-20
  • 打赏
  • 举报
回复
学习 支持下
猿敲月下码 2010-08-20
  • 打赏
  • 举报
回复
package com.csdn;

interface Animal {
void speak();
}

class Dog implements Animal {
@Override
public void speak() {
System.out.println("dog speak.");
}
}

class Cat implements Animal {
@Override
public void speak() {
System.out.println("cat speak.");
}
}

class Pig implements Animal {
@Override
public void speak() {
System.out.println("pig speak.");
}
}

public class NoIfElse {
// 比方说现在有个需求,
// 通过state状态来判断那种动物叫
// 0让狗叫,1让猫叫,2让猪叫

/**
* 方法1
*/
private void animalSpeak(int state) {
Animal[] animals = { new Dog(), new Cat(), new Pig() };
animals[state].speak();
}

/**
* 方法2,没有用到Animal接口
*/
private void animalSpeak2(int state) {
if (state == 0) {
new Dog().speak();
}
if (state == 1) {
new Cat().speak();
}
if (state == 2) {
new Pig().speak();
}
}

public static void main(String[] args) {
NoIfElse t = new NoIfElse();
int state = 1;

t.animalSpeak(state);

t.animalSpeak2(state);
}
}


LZ比较下方法1和方法2
猿敲月下码 2010-08-20
  • 打赏
  • 举报
回复
不建议使用过多的if else ,switch. 因为可扩展性差,而且难维护.

可以尝试用多态
酒剑仙 2010-08-20
  • 打赏
  • 举报
回复
没有IF 就没有业务!
zhy0511 2010-08-20
  • 打赏
  • 举报
回复
能用switch的时候不用if...else啊,效率高些嘛!
加载更多回复(51)

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧